#java #spring #jakarta-ee #jms
#java #spring #джакарта-ee #jms
Вопрос:
Я пытаюсь извлечь сообщения из очереди на основе идентификатора корреляции, используя метод, session.createConsumer(queue,messageSelector)
но он возвращается null
.
Ниже приведен полный синтаксис
MessageConsumer queueConsumer = queueSession.createConsumer(destinationQueue, "CorrID='" correlationID "'");
Кто-нибудь может подсказать, в чем может быть причина? Заранее спасибо
Ответ №1:
Если вы пытаетесь получить доступ к стандартному идентификатору корреляции JMS, используйте "JMSCorrelationID='" correlationID "'"
— см. https://docs.oracle.com/javaee/6/api/javax/jms/Message.html для получения полного описания селекторов сообщений выполните поиск «Ссылки на поля заголовка сообщения».
Комментарии:
1. мое требование состоит в том, чтобы сгенерировать идентификатор корреляции и поместить его в очередь вместе с различными сообщениями, а затем извлекать сообщения из очереди, используя идентификатор корреляции. Как этого добиться? Не уверен, что идентификатор корреляции, на который я ссылаюсь, является стандартным идентификатором корреляции JMS. Поскольку я делаю это весной, мне нужен класс производителя и потребителя JMS, а не слушатель, потому что в listener нет условия для установки критерия фильтрации, и поэтому все сообщения обрабатываются одновременно,