6

Zeromqドキュメントの「ARequest-ReplyBroker」を参照しています:http://zguide.zeromq.org/chapter:all

私はアプリの一般的な要点を理解しています。それは仲介者のように機能し、クライアントからサーバーにメッセージをルーティングし、また元に戻します。

私が得ていないのは、サーバーからの正しい応答が、最初に要求を行った正しいクライアントに送信されることを確認する方法です。これを確認するコード例には何も表示されません。

この例では、1つのメッセージ(hello)と1つの応答(world)のみを送信するため、メッセージが混同されても問題ありませんが、testclientとサーバーは意図的に単純に保たれていると思います。

どんな考えでも大歓迎です...

4

2 に答える 2

9

すべてのzeromqソケットには、暗黙的にIDが関連付けられています。(このIDはzmq_getsockopt()で取得できます。)

XREQまたはXREPではない双方向ソケットタイプの場合、このIDは、ソケットを介して送信されるすべてのメッセージの一部として自動的に転送されます。REPソケットは、このIDを使用して、応答メッセージを適切なソケットにルーティングします。これには、自動ルーティングの効果があります。

内部的には、IDはマルチパートメッセージを介して転送されます。マルチパートメッセージの最初のメッセージには、ソケットIDが含まれます。空のメッセージが続き、その後にユーザーが指定したすべてのメッセージが続きます。REQおよびREPソケットは、これらのプレフィックス付きメッセージを自動的に処理します。ただし、XREQまたはXREPソケットを使用している場合は、これらのIDメッセージを自分で入力する必要があります。

ZMQガイドで「ID」を検索すると、IDとソケットルーティングがどのように機能するかについて知りたいと思うすべての詳細が見つかるはずです。

于 2011-04-25T21:26:18.560 に答える
1

さて、第3章で、彼らは突然、req/respパターンがinvisublyに使用する「エンベロープ」の基本的な概念があることを説明します。

これはそれがどのように機能するかを説明しています。

于 2010-12-06T21:38:18.230 に答える