Вопрос

Я пытаюсь создать маршрут верблюда Apache, который отправляет сообщение JMS на тему, и если он не получает ответ в течение определенного времени, он запускает маршрут с помощью Spring DSL.

Проблема, которую у меня возникает, это то, что кажется, что фотопический звонок асинхронно. Я ожидаю, что это заблокировать и ждать сообщения или до достижения тайм-аута, но он отправляет сообщение на тему и запускается к следующему процессору. Когда возникает время ожидания, он снова вызывает процессор. Являются ли мои ожидания в отношении компонента JMS неправильно или у меня есть что-то настроенное неправильно?

Примечание: я использую JARS Camel 2.3.0.

    <endpoint id="foTopic"
          uri="jms:topic:${jms.fotopic.topicName}?pubSubNoLocal=true&amp;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 в неправильном месте, который вызывал странное поток сообщений в журналах (что привело меня к публикации этого вопроса в первую очередь).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top