Activemq AMQ个人确认模式 使用个人C++确认模式接收消息,手动接收AMQ接收的消息,使用C++CMS库,通过OpenWIP协议实现JMS标准。 我有两个消费者(消费者1、消费者2)从同一队列接收数据。当Consumer1收到消息时,Consumer1确认消息。当我杀死消费者1时,消费者2收到消息。我没想到消费者2会收到它,因为它已经确认了。我对acknowledge()的调用似乎被忽略

Activemq AMQ个人确认模式 使用个人C++确认模式接收消息,手动接收AMQ接收的消息,使用C++CMS库,通过OpenWIP协议实现JMS标准。 我有两个消费者(消费者1、消费者2)从同一队列接收数据。当Consumer1收到消息时,Consumer1确认消息。当我杀死消费者1时,消费者2收到消息。我没想到消费者2会收到它,因为它已经确认了。我对acknowledge()的调用似乎被忽略,activemq,activemq-cpp,amq,Activemq,Activemq Cpp,Amq,任何线索或指针都会有帮助。尝试连接到ActiveMQ 5.12.1或Red Hat AMQ 7.2.1,相同的行为表明问题不在于消息代理,而在于我方。我对acknowledge()的调用被忽略 很高兴提供更多信息 以下是消息接收者呼叫: 定义: cms::Message* _textMessage; 留言电话: MQMessage* AMQQueueInputService::getMessageConsumerReceiveSingle(long timeout) {

任何线索或指针都会有帮助。尝试连接到ActiveMQ 5.12.1或Red Hat AMQ 7.2.1,相同的行为表明问题不在于消息代理,而在于我方。我对acknowledge()的调用被忽略

很高兴提供更多信息

以下是消息接收者呼叫:

定义:

        cms::Message* _textMessage;
留言电话:

MQMessage* AMQQueueInputService::getMessageConsumerReceiveSingle(long timeout)
{
        try
        {
                _textMessage = _receiverRef->receive(timeout);

                const cms::TextMessage* textMessage = dynamic_cast< const cms::TextMessage* > (_textMessage);

                if (_textMessage == NULL)
                        return NULL;

                MQMessage* mqMessage = new MQMessage(textMessage->getText(), getMessageProperties( textMessage ));

                return mqMessage;
        }
        catch (cms::CMSException& e)
        {
                throw (e);
        }
}
消费者1输出:

杀了它

消费者2输出:


经过痛苦的测试,犯了愚蠢的错误。我正在从客户进程传递
3
,该进程是
SESSION\u交易的
个人确认
。我正在使用NetBeans,其中autocomplete显示以下内容(可能是字母顺序)。这导致我通过了
3
,而不是
4

CMS中的Session.h清楚地显示:

        enum AcknowledgeMode {

            AUTO_ACKNOWLEDGE,
            DUPS_OK_ACKNOWLEDGE,
            CLIENT_ACKNOWLEDGE,
            SESSION_TRANSACTED,
            INDIVIDUAL_ACKNOWLEDGE

        };

ActiveMQ-apache-ActiveMQ-5.12.1和AMQ-AMQ-broker-7.2.1
        enum AcknowledgeMode {

            AUTO_ACKNOWLEDGE,
            DUPS_OK_ACKNOWLEDGE,
            CLIENT_ACKNOWLEDGE,
            SESSION_TRANSACTED,
            INDIVIDUAL_ACKNOWLEDGE

        };