activemqのTCPエンドポイントの簡単なルーティング
-
06-07-2019 - |
質問
ActiveMQで開始したTCPからTCPへのルートを示す簡単なデモを取得しようとしています。 activemq.xml構成ファイルのラクダコンテキストでエンドポイントとルートをコーディングしています。
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
<package>org.myorg.codec</package>
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
<endpoint id="listener_B" uri="mina:tcp://localhost:42001?sync=false&textline=true"/>
<route>
<from uri="activemq:listener_A"/>
<to uri="activemq:listener_B"/>
</route>
<route>
<from uri="activemq:listener_B"/>
<to uri="activemq:listener_A"/>
</route>
</camelContext>
これが機能しない理由は何ですか?
AMQサーバーがリスニングポートを開いていないようです。
編集:ここでの目的は、単純なデモンストレーションとして、2つのtelnet端末(AおよびB)でActiveMQに接続し、メッセージキューサーバーを通じてメッセージを相互にルーティングできるようにすることです。後で、コンテンツに基づいてフィルタリングまたはルーティングを試みる場合があります。
解決
私はあなたの設定ファイルに少し混乱しています。正確に何をしようとしていますか?
MINAを使用するために2つのエンドポイントを定義しました(ActiveMQはまったく使用しません)。 ActievMQキューlistener_Aからlistener_Bへのルートを使用し、listener_Bからlistener_Aへのルートを使用しています(再帰ループ)。
おそらく、やりたいことを説明し始めたら、XMLがどのように見えるかを理解できるでしょう。
定義したエンドポイントのみを参照したい場合は、 uri =&quot; ...&quot; ではなく、 ref =&quot; name&quot; 属性を使用してください。 >。
e.g。
<route>
<from ref="listener_A"/>
<to ref="listener_B"/>
</route>
これらすべてのこと-あなたは良くなる傾向があります。 Camelユーザーフォーラム
を介したCamelの高速サポート他のヒント
詳細:
エンドポイントがmina tcp接続として定義されている場合、「activemq :: listener_A」として識別できません。
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
これは間違っています:
<from uri="activemq:listener_A"/>
これは動作します:
<from ref="listener_A"/>
これも:
<from ref="mina:tcp://localhost:42000?sync=false&textline=true"/>