session.createConsumer() возвращает null

#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 нет условия для установки критерия фильтрации, и поэтому все сообщения обрабатываются одновременно,