1

分散 jms キューを使用しており、weblogic がアプリ サーバーです。私のクラスター化された環境には、3 つの jms サーバーがデプロイされています。プロデューサーは、たとえば、キュ​​ーの名前 jndi ルックアップ「udq」を使用してメッセージを送信するだけです。これで、各 jms サーバーにコンシューマーが関連付けられ、メッセージを消費することができました。これまでのところ問題はありません。

ここで質問です。3 つの JMS サーバーからのメッセージを消費するコンシューマーを 1 つ持つことはできますか。weblogic では、次の構文 @ を使用して、宛先ルックアップの jndi 命名を許可しています。

            qsession1 = qcon1.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession2 = qcon2.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession3 = qcon3.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

            queue1 = (Queue)ctx.lookup("JMSServer-1@UDQ");
            queue2 = (Queue)ctx.lookup("JMSServer-2@UDQ");
            queue3 = (Queue)ctx.lookup("JMSServer-3@UDQ");
            qreceiver1 = qsession1.createReceiver(queue1);
            qreceiver2 = qsession2.createReceiver(queue2);
            qreceiver3 = qsession3.createReceiver(queue3);
            qreceiver1.setMessageListener(this);
            qreceiver2.setMessageListener(this);
            qreceiver3.setMessageListener(this);

            qcon1.start();
            qcon2.start();
            qcon3.start();

上記のコンシューマーに対して実装されている OnMessage は 1 つだけです。これは動作しません。任意の提案をお願いします..

4

2 に答える 2

3

いいえ、コンシューマーが複数の JMS サーバーからメッセージを受信することはできません。コンシューマーは、1 つの JMS サーバーからのみメッセージを受信できます。複数の JMS サーバーからメッセージを受信するには、複数のコンシューマーを作成する必要があります。

于 2013-01-03T04:11:45.967 に答える
0

「キュー転送」機能を使用できます。wls 10.3 のオンライン ドキュメントから:

「キュー メンバーは、管理コンソールで [転送遅延] 属性を構成することにより、他のキュー メンバーにメッセージを転送できます。この属性は、デフォルトで無効になっています。この属性は、分散キュー メンバーがメッセージを保持する時間を秒単位で定義します。コンシューマーは、コンシューマーを持つ他のキュー メンバーにメッセージを転送する前に待機します。」

ここにリンク:http://docs.oracle.com/cd/E13222_01/wls/docs103/jms/dds.html#wp1260816

この機能は、各キューの管理から構成できます。

于 2015-03-24T10:51:02.580 に答える