如何使用 JMS Correlation ID 识别消息?

How do I identify a message using JMS Correlation ID?

如何使用 JMS 关联 ID 识别消息?我正在使用如下代码,但无法从队列中取出消息。该工具已确认队列中有一条在 PropertiesText 中设置了 JMSCorrelationID ='ID: 1234567' 的消息。怎么了?是否可以在为 JMSCorrelationID 指定的值中包含空格? 是否可以使用 'ID: 1234 ABC'?

这样的值

发件人:

    MessageProducer mproducer;
    Session qSession;
    ...
    String selectKey = "'' ID: 1234567'";
    ObjectMessage msg = qSession.createObjectMessage (data);
    msg.setJMSCorrelationID (selectKey);
    mProducer.send (msg);

接收者

    Session qSession;
    ...
    String selectMsgKey = "JMSCorrelationID ='ID: 1234567'";
    MessageConsumer mConsumer.createConsumer (queue, selectMsgKey);
    mConsumer.receive (60000);

我使用 ActiveMQ Artemis。

相关 ID 中可以包含空格。我认为问题在于您在发件人中定义 selectKey 的方式。你那里有额外的 ' 个字符。你应该简单地使用:

String selectKey = "ID: 1234567";

那么你的选择器应该可以工作了。