1

Weblogic サーバー 12c で一様分散キューをセットアップしました。jms 分散キューを使用して、配信順序と高可用性を実現しようとしています。私のプロトタイプ テスト デプロイでは、クラスター内に 2 つの管理対象サーバーがあります。この管理対象サーバーはそれぞれ、jms サーバー、つまり jms サーバー 1 と jms サーバー 2 をホストします。jdbc永続ストアを使用してjmsサーバーを構成しました。サーバー アフィニティを有効にしました。

  1. Java queuproducer t3::/managed_server1 などのプロデューサーを実行しています。4 メッセージを送信します。Weblogic 監視コンソールから、キューへのコンシューマがまだないため、キューに 4 つのメッセージがあることがわかります。
  2. ここで、managed_server1 をシャットダウンします。
  3. Java queuconsumer t3://managed_server2 でリッスンするコンシューマを起動します。プロデューサがすべてのメッセージを jms server1 に送信し、ダウンしているため、このコンシューマはメッセージを消費できません。
  4. 管理対象サーバー 1 を起動し、コンシューマーを開始して t3://managed_server1 をリッスンします。すべてのメッセージを取得できます。

ここに私の問題があります。managed_server1 がダウンした場合、そこに戻ってこない場合、すべてのメッセージが失われますか。また、Java キュープロデューサー t3://managed_server2 にメッセージを送信する別のプロデューサーが存在する場合、これらのプロデューサー間の時間に基づくメッセージの順序は保証されません。

私は少し道に迷っています。何か足りないのでしょうか。注文の単位は、これを克服するのに役立ちますか。または、分散キューの代わりに分散トピックを使用する必要があります。この場合、すべての jms サーバーがプロデューサーからすべてのメッセージを受信しますが、consumre がリッスンしている 1 つの jms サーバーに障害が発生した場合、他のアプリケーションに切り替えると、アプリケーションには 1 つのコンシューマーしかありません。 jms サーバー、中断したところからではなく、最初からメッセージを取得し始めている可能性があります。

同じことに関する提案は役に立ちます。

4

1 に答える 1

2

良い質問 !

「これが私の問題です。managed_server1 がダウンした場合、そこに戻ってこない場合、すべてのメッセージが失われますか?」

回答 - いいえ、すべてのメッセージを失うわけではありません。メッセージは、管理対象サーバー 1 にデプロイされた JMS サーバー用に構成された JDBC ストアに格納されます。

「また、別のプロデューサがメッセージを Java キュープロデューサ t3://managed_server2 に送信している場合、これらのプロデューサ間の時間に基づくメッセージの順序は保証されません。順序の単位は、これを克服するのに役立ちます。」

回答 - メッセージを特定の順序で厳密に消費したい場合は、順序単位 (UOO) を使用する必要があります。メッセージが UOO を使用して送信されると、いくつかの UDQ 宛先の 1 つに送信されます。途中で宛先に障害が発生し、移行が有効になっている場合、メッセージは次の UDQ 宛先に移行され、新しい UDQ メッセージも新しい宛先に配信されます。

便利なリンク -

http://www.youtube.com/watch?v=B9J7q5NbXag http://www.youtube.com/watch?v=_W3EJ8p35lI

お役に立てれば。

于 2012-12-20T12:50:28.260 に答える