Я работаю над корреляцией сообщений ActiveMQ с использованием Camel Blueprint xml DSL, и мне нужно добиться следующего,
- маршрута Camel, который получает сообщение из локальной (Host A) очереди Apache ActiveMQ ("XYZ")") и помещает сообщение в удаленную (Host B) Apache ActiveMQ (" ABC ") очередь после установки
InOut
pattern, useMessageIDAsCorrelationID
и replyTo
queue как" DEF "(который определен на удаленном хосте,Хост B) - Приложение производителя на удаленном хосте (Хост B) подхватит мое сообщение и скопирует JMSMessageID в JMSCorrelationID и поместит ответное сообщение в очередь ответов ActiveMQ (т. Е. "DEF", которая определена вБрокер Apache ActiveMQ, хост B)
- Теперь биржа Camel должна подождать в очереди ответов "DEF", чтобы получить сообщение, используя соответствующий JMSCorrelationID
Вопрос
Посоветуйте, пожалуйста, как мне настроить маршрут для получения ответа для моей очереди ответов (например, "DEF"), используя соответствующий JMSCorrelationID.
Маршрут, которыйч я поставил пока это:
<route id="test5">
<from id="test-from5" uri="jms:queue:XYZ?connectionFactory=amqConnectionFactory"/>
<log id="test-log5" message=" Transferring to queue"/>
<log id="test" message="Request Message Body : ${body}" />
<log message="Request JMSMessageID : ${in.header.JMSMessageID}" />
<setHeader headerName="JMSCorrelationID" id="_setHeader3">
<simple>${in.header.JMSMessageID}</simple>
</setHeader>
<log message="Request JMSCorrelationID : ${in.header.JMSCorrelationID}" />
<to id="_to5" uri="jms:queue:ABC?connectionFactory=amqConnectionFactoryABC&exchangePattern=InOut&replyTo=DEF&useMessageIDAsCorrelationID=true"/>
<log message="Message sent successfully" />
<log message="Response JMSMessageID : ${in.header.JMSMessageID}" />
<log message="Response JMSCorrelationID : ${in.header.JMSCorrelationID}" />
<log message="Response Message Body : ${in.body}" />
</route>