@@ -650,6 +650,14 @@ void MultiTopicsConsumerImpl::notifyPendingReceivedCallback(Result result, const
650
650
callback (result, msg);
651
651
}
652
652
653
+ static void logErrorTopicNameForAcknowledge (const std::string& topic) {
654
+ if (topic.empty ()) {
655
+ LOG_ERROR (" MessageId without a topic name cannot be acknowledged for a multi-topics consumer" );
656
+ } else {
657
+ LOG_ERROR (" Message of topic: " << topic << " not in consumers" );
658
+ }
659
+ }
660
+
653
661
void MultiTopicsConsumerImpl::acknowledgeAsync (const MessageId& msgId, ResultCallback callback) {
654
662
if (state_ != Ready) {
655
663
interceptors_->onAcknowledge (Consumer (shared_from_this ()), ResultAlreadyClosed, msgId);
@@ -658,19 +666,14 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageId& msgId, ResultCal
658
666
}
659
667
660
668
const std::string& topicPartitionName = msgId.getTopicName ();
661
- if (topicPartitionName.empty ()) {
662
- LOG_ERROR (" MessageId without a topic name cannot be acknowledged for a multi-topics consumer" );
663
- callback (ResultOperationNotSupported);
664
- return ;
665
- }
666
669
auto optConsumer = consumers_.find (topicPartitionName);
667
670
668
671
if (optConsumer) {
669
672
unAckedMessageTrackerPtr_->remove (msgId);
670
673
optConsumer.value ()->acknowledgeAsync (msgId, callback);
671
674
} else {
672
- LOG_ERROR ( " Message of topic: " << topicPartitionName << " not in unAckedMessageTracker " );
673
- callback (ResultUnknownError );
675
+ logErrorTopicNameForAcknowledge ( topicPartitionName);
676
+ callback (ResultOperationNotSupported );
674
677
}
675
678
}
676
679
@@ -684,7 +687,7 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageIdList& messageIdLis
684
687
for (const MessageId& messageId : messageIdList) {
685
688
auto topicName = messageId.getTopicName ();
686
689
if (topicName.empty ()) {
687
- LOG_ERROR ( " MessageId without a topic name cannot be acknowledged for a multi-topics consumer " );
690
+ logErrorTopicNameForAcknowledge (topicName );
688
691
callback (ResultOperationNotSupported);
689
692
return ;
690
693
}
@@ -710,18 +713,21 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageIdList& messageIdLis
710
713
unAckedMessageTrackerPtr_->remove (kv.second );
711
714
optConsumer.value ()->acknowledgeAsync (kv.second , cb);
712
715
} else {
713
- LOG_ERROR ( " Message of topic: " << kv.first << " not in consumers " );
714
- callback (ResultUnknownError );
716
+ logErrorTopicNameForAcknowledge ( kv.first );
717
+ callback (ResultOperationNotSupported );
715
718
}
716
719
}
717
720
}
718
721
719
722
void MultiTopicsConsumerImpl::acknowledgeCumulativeAsync (const MessageId& msgId, ResultCallback callback) {
720
- msgId.getTopicName ();
723
+ const auto & topic = msgId.getTopicName ();
721
724
auto optConsumer = consumers_.find (msgId.getTopicName ());
722
725
if (optConsumer) {
723
726
unAckedMessageTrackerPtr_->removeMessagesTill (msgId);
724
727
optConsumer.value ()->acknowledgeCumulativeAsync (msgId, callback);
728
+ } else {
729
+ logErrorTopicNameForAcknowledge (topic);
730
+ callback (ResultOperationNotSupported);
725
731
}
726
732
}
727
733
0 commit comments