6

分散メッセージング アプリケーションに ZEROMQ を使用しています。クライアント (DEALER ソケット) を複数のサーバー (サーバー側の ROUTER ソケット) に接続する必要があります。クライアント側のオプションは何ですか?

  1. 各サーバー エンドポイント (ROUTER ソケット) に対してクライアント側で DEALER ソケットを作成します。
  2. クライアント側に 1 つの DEALER ソケットのみを作成し、複数のエンドポイントを追加します。

オプション 2 を試しました - 複数のエンドポイントに接続しますが、メッセージは常に最初に接続されたエンドポイントに送信されます。次の手順に従いました。

  • DEALER ソケットの作成
  • 最初のエンドポイントに接続する
  • 次に、実行時に、socket.connect(endpoint) を使用して別のエンドポイントをソケットに追加します。再接続する必要がありますか?

DEALER ソケットでは、複数のエンドポイントに接続されている場合に、特定のエンドポイントでメッセージを送信するオプションはありません。

何か案が?

4

1 に答える 1

5

ZeroMQ は、特定の動作をソケット タイプにエンコードします。これらは主に以下を扱います。

  1. 複数のピアの処理
  2. 配信不能メッセージの処理
  3. 過剰なスループット (HWM) の処理

DEALER ソケットは、複数のピアに接続できるソケットであり、LRU (最近使用されていない、別名ラウンドロビン) を使用して、各メッセージを取得するピアを決定します。この動作が望ましくない場合は、複数のピアを持つ DEALER ソケットは必要ありません。

どのピアがメッセージを受け取るかを決定したい場合、これには 2 つのオプションがあります。

  1. ピアごとに DEALER を作成し、適切なソケットで送信します
  2. すべてのピアに接続された単一の ROUTER を作成し、IDENTITY プレフィックスを使用してメッセージをルーティングします。ROUTER-ROUTER 接続を使用するには、IDENTITIES をサイド チャネル経由で渡す必要がある場合があります。

実行時に、 を使用して別のエンドポイントをソケットに追加しますsocket.connect(endpoint)。再接続する必要がありますか?

いいえ、再接続する必要はありません。プログラム中はいつでもピアを追加 (および削除) できます。

于 2013-10-17T16:54:10.400 に答える