سؤال

أحاول إنشاء مسار Apache Camel يرسل رسالة JMS إلى موضوع ما ، وإذا لم يتلق رد في غضون فترة زمنية معينة ، فإنه يبدأ مسارًا باستخدام Dring DSL.

المشكلة التي أواجهها هي أنه يبدو أن الدعوة fotopic غير متزامنة. أتوقع أن يحظرها وانتظر رسالة أو حتى يتم الوصول إلى المهلة ، لكنها ترسل الرسالة إلى الموضوع وتدير إلى المعالج التالي. عندما تحدث المهلة ، فإنها تستدعي المعالج مرة أخرى. هل توقعاتي حول خطأ مكون JMS أم هل لدي شيء تم تكوينه بشكل غير صحيح؟

ملاحظة: أنا أستخدم 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