8

メッセージ キューを使用して多数のパブリッシャー/サブスクライバーを含むシステムを構築していた場合、いくつかのネットワーク構成オプションがあるようです。

  1. すべてのマシンが使用する 1 つのクラスター化されたブローカーを持つことができます。各マシンにはローカル キューがありません。
  2. すべてのマシンにブローカーをローカルにインストールし、ストア アンド フォワードを使用してリモート マシンにメッセージを配信できます。

たとえば、MSMQ ではすべてのマシンに独自のローカル キューが必要ですが、Tibco EMS は多くの場合、各コンシューマーにローカル キューを持たずにクラスターで使用されるようです。

ローカル キューがないことのマイナス面と、その決定に影響を与える要因は何ですか?

4

3 に答える 3

5

永続的なメッセージストアを提供するローカルキューがないということは、メッセージの配信を保証できないことを意味します。ブローカーインスタンスをローカルに持つクラスターでRabbitMQのようなものを使用すると、配信用のメッセージを保存するための永続的なメカニズムが提供されます。永続的なメッセージを送信するためにネットワーク接続を介してリモートブローカーに接続する必要がある場合は、ネットワーク障害のリスクが高くなります。

MSMQもストアアンドフォワードですが、クラスター化されたルーティング機能は提供しません。これは、アプリケーションが作業を実行する必要があることを意味します(または、MassTransitやNServiceBusなどのレイヤーがその上に実行されます)。

TIBCOについて考えるとき、ブローカーインスタンスをローカルで実行するのではなく、アプリケーションサーバーが通信するEMSサーバーの集中型クラスターについて考えます。EMSとBusinessWorksアプリケーションサーバーをラップアラウンドするGUIツールは、実際にその世界でモデルを強制します。

メッセージがローカルに保存される分散型の場合は、マシン自体がメッセージストレージ用に適切に装備され、予想されるメッセージバックログ/容量に対して高速ディスクと十分なディスクがあることを確認することが重要です。

于 2011-09-07T21:02:56.677 に答える
3

ほとんどのシナリオでは、ローカル キューが必要になると思います。

メッセージが永続的である必要がある場合は、ローカル キューが必要です。つまり、リモート キューへの接続が不安定で、最終的にメッセージをそのサブスクライバーに到達させたい場合は、ローカル キューのストア アンド フォワード機能が必要になります。

メッセージが永続的である必要がない (イベントの発生後に失われる可能性がある) 場合は、リモート共有キューがオプションになります。

NServiceBus ディストリビューター モデルを検討することをお勧めします。これは、2 つのシナリオを組み合わせたものです。各マシンにローカル キューを配置して、リモート ブローカー/ディストリビューター クラスターに転送します。

于 2011-09-07T21:04:40.407 に答える
2

MSMQ に関するコメントは古くなっているように見えるため、同意するかどうかはわかりません。多分私は何かが足りない。

どちらのシナリオも MSMQ でサポートされています。

シナリオ 1 では、クライアントは Transactional Remote Receives (MSMQ 4.0 以降) を使用します。トランザクショナルであるため、受信は信頼性が高く、メッセージは耐久性があります (以前のバージョンの MSMQ とは異なり、中止された受信はサーバーにメッセージを残します)。

シナリオ 2 では、ストア アンド フォワード送信キューがクライアントのローカル トランザクション キューに送信されます (これも信頼性と耐久性があります)。

信頼性と耐久性は、ローカル キューとリモート キューのどちらを使用するかを決定するポイントではありません。ここでの MSMQ の差別化要因はパフォーマンスです。

于 2011-09-08T11:37:03.430 に答える