Я пытаюсь создать маршрут Apache Camel, который отправляет сообщение jms в тему, и если он не получит ответа в течение определенного времени, он начнет маршрут с использованием Spring DSL.JMS-запрос/ответ в Apache Camel
Проблема, с которой я столкнулась, заключается в том, что она выглядит как асинхронный вызов foTopic. Я ожидаю, что он заблокирует и дождитесь сообщения или пока не будет достигнут тайм-аут, но он отправит сообщение в тему и перейдет к следующему процессору. Когда происходит тайм-аут, он снова вызывает процессор. Является ли мои ожидания относительно компонента jms неправильным или у меня что-то неправильно настроено?
ПРИМЕЧАНИЕ: Я использую верблюды 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>