@@ -650,6 +650,14 @@ void MultiTopicsConsumerImpl::notifyPendingReceivedCallback(Result result, const
650650 callback (result, msg);
651651}
652652
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+
653661void MultiTopicsConsumerImpl::acknowledgeAsync (const MessageId& msgId, ResultCallback callback) {
654662 if (state_ != Ready) {
655663 interceptors_->onAcknowledge (Consumer (shared_from_this ()), ResultAlreadyClosed, msgId);
@@ -658,19 +666,14 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageId& msgId, ResultCal
658666 }
659667
660668 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- }
666669 auto optConsumer = consumers_.find (topicPartitionName);
667670
668671 if (optConsumer) {
669672 unAckedMessageTrackerPtr_->remove (msgId);
670673 optConsumer.value ()->acknowledgeAsync (msgId, callback);
671674 } else {
672- LOG_ERROR ( " Message of topic: " << topicPartitionName << " not in unAckedMessageTracker " );
673- callback (ResultUnknownError );
675+ logErrorTopicNameForAcknowledge ( topicPartitionName);
676+ callback (ResultOperationNotSupported );
674677 }
675678}
676679
@@ -684,7 +687,7 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageIdList& messageIdLis
684687 for (const MessageId& messageId : messageIdList) {
685688 auto topicName = messageId.getTopicName ();
686689 if (topicName.empty ()) {
687- LOG_ERROR ( " MessageId without a topic name cannot be acknowledged for a multi-topics consumer " );
690+ logErrorTopicNameForAcknowledge (topicName );
688691 callback (ResultOperationNotSupported);
689692 return ;
690693 }
@@ -710,18 +713,21 @@ void MultiTopicsConsumerImpl::acknowledgeAsync(const MessageIdList& messageIdLis
710713 unAckedMessageTrackerPtr_->remove (kv.second );
711714 optConsumer.value ()->acknowledgeAsync (kv.second , cb);
712715 } else {
713- LOG_ERROR ( " Message of topic: " << kv.first << " not in consumers " );
714- callback (ResultUnknownError );
716+ logErrorTopicNameForAcknowledge ( kv.first );
717+ callback (ResultOperationNotSupported );
715718 }
716719 }
717720}
718721
719722void MultiTopicsConsumerImpl::acknowledgeCumulativeAsync (const MessageId& msgId, ResultCallback callback) {
720- msgId.getTopicName ();
723+ const auto & topic = msgId.getTopicName ();
721724 auto optConsumer = consumers_.find (msgId.getTopicName ());
722725 if (optConsumer) {
723726 unAckedMessageTrackerPtr_->removeMessagesTill (msgId);
724727 optConsumer.value ()->acknowledgeCumulativeAsync (msgId, callback);
728+ } else {
729+ logErrorTopicNameForAcknowledge (topic);
730+ callback (ResultOperationNotSupported);
725731 }
726732}
727733
0 commit comments