Pregunta

Estoy intentando crear una ruta de Apache Camel que envía un mensaje JMS a un tema y si no recibe una respuesta dentro de una cierta cantidad de tiempo que se inicia una ruta utilizando Spring DSL.

El problema que estoy teniendo es que aparece la llamada foTopic es asíncrona. Espero que para bloquear y esperar a que un mensaje o hasta que se alcanza el tiempo de espera, pero envía el mensaje con el tema y se ejecuta al siguiente procesador. Cuando se produce el tiempo de espera se llama el procesador nuevo. Son mis expectativas sobre el componente JMS mal o tengo algo mal configurado?

NOTA:. Estoy usando camello 2.3.0 frascos

    <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>
¿Fue útil?

Solución

Esta fue una mala configuración de mi parte. Fue de hecho funciona de forma sincrónica. Había originalmente colocado la etiqueta doCatch en el lugar equivocado que estaba causando el flujo de mensajes en los registros de extraña (lo que me llevó a escribir esta pregunta en el primer lugar).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top