Как я могу идентифицировать сообщение с помощью идентификатора корреляции JMS?

#jms #activemq-artemis

Вопрос:

Как я могу идентифицировать сообщение с помощью идентификатора корреляции JMS? Я использую код, подобный следующему, но я не могу вывести сообщение из очереди. Инструмент подтвердил, что в очереди есть сообщение с 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.

Ответ №1:

В идентификаторе корреляции могут быть пробелы. Я считаю, что проблема в том, как вы определяете selectKey своего отправителя. У вас там есть дополнительные ' персонажи. Вы должны просто использовать:

 String selectKey = "ID: 1234567";
 

Тогда ваш селектор должен работать.

Комментарии:

1. Спасибо тебе,Джастин. Теперь я могу нормально получить сообщение тем методом, которому вы меня научили.