Запрос JMS / Ответить в Apache верблюда
-
02-10-2019 - |
Вопрос
Я пытаюсь создать маршрут верблюда Apache, который отправляет сообщение JMS на тему, и если он не получает ответ в течение определенного времени, он запускает маршрут с помощью Spring DSL.
Проблема, которую у меня возникает, это то, что кажется, что фотопический звонок асинхронно. Я ожидаю, что это заблокировать и ждать сообщения или до достижения тайм-аута, но он отправляет сообщение на тему и запускается к следующему процессору. Когда возникает время ожидания, он снова вызывает процессор. Являются ли мои ожидания в отношении компонента JMS неправильно или у меня есть что-то настроенное неправильно?
Примечание: я использую JARS Camel 2.3.0.
<endpoint id="foTopic"
uri="jms:topic:${jms.fotopic.topicName}?pubSubNoLocal=true&requestTimeout=5000"/>
<route id="foMasterRegistration" startupOrder="10">
<!-- Fire this route once on startup. -->
<from uri="timer:foStartTimer?period=0"/>
<to uri="foPreProcessor"/>
<doTry>
<setExchangePattern pattern="InOut"/>
<to uri="foTopic"/>
<to uri="foProcessor"/>
<doCatch>
<exception>java.util.concurrent.TimeoutException</exception>
<exception>org.apache.camel.ExchangeTimedOutException</exception>
<to uri="foProcessor"/>
</doCatch>
</doTry>
</route>
Решение
Это была неправильная передача на моей части. Это действительно было работать синхронно. Первоначально я поместил тег DOCATCH в неправильном месте, который вызывал странное поток сообщений в журналах (что привело меня к публикации этого вопроса в первую очередь).