2

REPソケットのZeroMQドキュメントには、次のように記載されています。

元のリクエスターがもう存在しない場合、応答は黙って破棄されます。

私のプロジェクトでは、元のリクエストを行ったエンティティがもう存在しないことを知り、応答をリッスンする方法が必要です。つまり、返信を破棄する場合はエラーをスローしたいのですが。

そのようなことは可能ですか、それとも別のチャネルを使用して、応答の受信時にリクエスターまたはある種のACKをチェックする必要がありますか?

4

1 に答える 1

1

zmq ソケットはそれを知る方法がないため、別のチャネルを使用してリクエスターを追跡する必要があります。

その目的のために要求/応答ソケットを逆に使用できますが、本質的に応答を行う前に別の要求/応答を行うため、パフォーマンスの問題が発生する可能性があります。

Entity1                 Entity2
Request --------------   Reply
Reply   --------------   Request

そしてコミュニケーションの流れは

Entity1 --------> request -----> Entity2
Entity1 <-------  request <----- Entity2
Entity1 --------  reply   ------> Entity2
Entity1 <-------  reply   ------- Entity2

これにより、エンティティ 1 が応答を受信できないことが保証されますが、応答の可能性が向上します。

ただし、リクエスタの状態をリプライヤに知らせるよう要求するのは得策ではないかもしれません。

于 2012-06-20T23:11:21.117 に答える