Привет, я работаю с мулом и использую входящий JMS для прослушивания определенной очереди. Я хочу настроить свой JMS таким образом, чтобы, если я отправляю данные из Active MQ с определенным идентификатором корреляции, и этот идентификатор корреляции уже настроен в Mule JMS Inbound. Он будет слушать и опрашивать только это. Пожалуйста, поделитесь некоторой конфигурацией JMS XML для лучшего понимания.
Как прослушивать данные из определенного идентификатора корреляции и очереди в Mule
Ответы (1)
Существует фильтр с именем jms:selector
во входящих сообщениях JMS для выбора определенного типа сообщения на основе его свойств.
Теперь, как вы сказали, вы отправляете сообщение из ActiveMQ с определенным идентификатором корреляции, поэтому вы можете выбрать сообщение для использования в своем Mule на основе этого конкретного идентификатора корреляции следующим образом: -
<jms:inbound-endpoint queue="reply"
connector-ref="Active_MQ" exchange-pattern="one-way"
doc:name="JMS-REPLY"/ >
<jms:selector expression="JMSCorrelationID='your corelation id'"/>
</jms:inbound-endpoint>
Вы можете видеть пример здесь: - Mule запрос-ответ, использующий все сообщения в очереди ответов JMS
Но, опять же, я бы посоветовал вам не фильтровать идентификатор корреляции на основе сообщения, если этот идентификатор корреляции не определен в вашем сообщении, которое вы отправляете, или вы не устанавливаете его как статический идентификатор, он может быть не в состоянии использовать, если идентификатор корреляции отличается.
Итак, я бы предложил вам фильтровать сообщение на основе приоритета сообщения, что является лучшим способом фильтрации сообщений JMS.
Вот как вы можете установить приоритет сообщения в самом потоке Mule для сообщений JMS и использовать его на основе этого свойства приоритета: - Mule: очередь ответов JMS потребляет все сообщения. Я хочу обрабатывать сообщения, поступающие в очередь ответов