#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. Спасибо тебе,Джастин. Теперь я могу нормально получить сообщение тем методом, которому вы меня научили.