3

現在、WebLogic と分散キューを使用しています。また、ドキュメントから、分散キューを使用すると、グローバル JNDI 名を使用してクラスター全体の任意のキューへの接続を取得できることがわかります。分散キューが提供する主な機能の 1 つは、複数の管理対象サーバー間で接続を負荷分散することです。したがって、4 つの管理対象サーバー (各物理サーバーに 2 つ、マルチキャストを介して通信) があり、各管理対象サーバーには、独自のデータ ストアに構成された個別の JMS サーバーがあります。

私はこれに対する答えをすでに知っていると 99% 確信していますが、キューからメッセージを消費したい場合、そのキューがクラスター内の各 Mgd サーバーに存在する場合、技術的にメッセージを引き出すことはできないようです。キューのいずれか (接続しているキューからのみメッセージを引き出すことができます)。したがって、Mgd Server 4 にメッセージがあり、Mgd Server 1 に接続すると、Mgd Server 4 からのメッセージがキューに表示されません。

Java EE または WLS で、キューのすべてのノードから (クラスタ全体で) メッセージを消費する方法はありますか。各 Mgd サーバーのキューのすべてのインスタンスを表示したいですか? そうは見えず、ドキュメンテーションによると、これは不可能のように見えます。また、このビデオ (約 5 分):

http://www.youtube.com/watch?v=HAKixK_wp0Q

4

2 に答える 2

3

いいえ、クライアントが同じクラスタの別の管理対象サーバーに接続されている場合、ある管理対象サーバーに配信されたメッセージを消費することはできません。

仕組みは次のとおりです。UDT を使用する場合、wls は、管理対象サーバーごとに 4 つの個別の JNDI 名に内部的に解決される JNDI 名を提供します。各管理対象サーバー上の JMS サーバーは個別です。メッセージを投稿するときに UDQ JNDI 名を使用すると、選択したアルゴリズムと接続ファクトリで行われたその他の構成を使用して、4 つの管理対象サーバーのいずれかに到達します。

メッセージ コンシューマが UDQ をリッスンすると、管理対象サーバの 1 つで JMS サーバに固定されます。他のサーバーのメッセージは表示されません。

通常、UDQ は、メッセージを複数の管理対象サーバーで同時に消費するシナリオで使用されます。通常は MDB をクラスタにデプロイします。つまり、MDB は各管理対象サーバーにデプロイされ、それぞれがローカル JMS サーバーからメッセージを消費できるようになります。

于 2013-02-21T17:53:34.277 に答える
0

メッセージストアがデータベースを使用するように構成されていれば、できると思います。もしそうなら、キューからアイテムを削除すると、共有データベーステーブルからアイテムが削除されると思います。つまり、すべてのJMSサーバーが同じdbインスタンスとテーブルを指しています。それもテストするのはかなり簡単なはずです。

于 2013-02-21T00:46:20.590 に答える