Question

Je suis en train de créer une route Camel Apache qui envoie un message jms à un sujet et si elle ne reçoit pas de réponse dans un certain laps de temps, il commence un itinéraire à l'aide DSL Spring.

Le problème que j'ai est qu'il semble l'appel foTopic est asynchrone. Je pense à bloquer et attendre un message ou jusqu'à ce que le délai d'attente est atteint, mais il envoie le message au sujet et fonctionne à l'autre processeur. Lorsque le délai d'attente se produit, il appelle à nouveau le processeur. Mes attentes au sujet du mauvais jms composant ou dois-je quelque chose mal configuré?

NOTE:. J'utilise des pots de chameau 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>
Était-ce utile?

La solution

Ce fut une mauvaise configuration de ma part. Il était en effet fonctionnant de manière synchrone. J'avais initialement placé l'étiquette doCatch au mauvais endroit qui a été à l'origine de flux de messages étranges dans les journaux (ce qui m'a amené à poster cette question en premier lieu).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top