Mule での ActiveMQ 負荷分散に問題があります。Mule 3.2.0 と ActiveMQ 5.5.1 を使用しています
JMS インバウンド エンドポイントを使用して ActiveMQ のキューをリッスンする Mule FLow アプリケーションがあります。AMQ の 2 つのインスタンスが実行されており、それぞれに「MyQueue」というキューがあります。それらに AMQ1 と AMQ2 という名前を付けましょう。また、2 つのミュール インスタンスを実行しています。それぞれが同じアプリを持っています。それらに Mule1 と Mule2 という名前を付けましょう。
次に、各ミュール インスタンスがいずれかの AMQ キューからメッセージを取得するようにします。したがって、メッセージ送信者が AMQ1 または AMQ2 のキュー MyQueue にメッセージを送信するとします (メッセージ送信者は、ActiveMQ でサポートされているフェイルオーバー トランスポートを使用して負荷を分散し、そのビットは正常に動作します)。AMQ1 に到達したとします。理想的には、Mule1 と Mule2 のそれぞれに 10 個のコンシューマーを各 AMQ インスタンスに登録したいと考えています。したがって、どちらも両方のキューで着信メッセージをリッスンしています。そのうちの 1 人がキューからメッセージを取得して処理する必要があります。
これは、両方の AMQ ブローカーに接続するために Mule で使用している構成です。
<jms:activemq-connector name="Active_MQ" brokerURL="failover:tcp://10.0.64.158:61616,tcp://10.0.64.160:61616)?randomize=true" eagerConsumer="true" numberOfConsumers="10" dynamicNotification="true" validateConnections="true" clientId="MuleInstance1" doc:name="Active MQ">
<reconnect count="5" frequency="3000" blocking="false"/>
</jms:activemq-connector>
clientId は Mule インスタンスごとに異なることに注意してください。また、現在、AMQ 1 と Mule1 は同じマシンを共有し、AMQ2 と Mule2 は別のマシンを共有しています。
しかし、私は soem のランダムな動作に気づいています。AT では、すべてのコンシューマー (Mule1 と Mule2 の両方) が 1 つの AMQ インスタンスにのみ登録されます。Mule1 は AMQ1 にのみ登録し、Mule 2 は AMQ2 に登録する場合があります。理想的には、Mule1 と Mule2 の両方の cosnumer を AM1 と AMQ2 の両方に登録することです。ここの指示に従いました http://www.mulesoft.org/documentation-3.2/display/MULE3USER/ActiveMQ+Integration
基本的に、Mule インスタンスまたは AMQ インスタンスがダウンしたり、再起動する必要がある場合にサービスが失われないように、ブローカー アーキテクチャのネットワークを使用したかったのです。この場合に役立つrandomize=trueクエリ パラメータが不明です。
Mule 3.2.0 と Active MQ 5.5.1 を使用して上記を実現する方法を教えてください。
悲しいことに解決策がない場合は、Mule1 を AMQ1 にリッスンさせ、Mule2 を AMQ2 だけにリッスンさせる必要があるかもしれません。実際にはクラスター化されません :(
前もって感謝します。