REPソケットのZeroMQドキュメントには、次のように記載されています。
元のリクエスターがもう存在しない場合、応答は黙って破棄されます。
私のプロジェクトでは、元のリクエストを行ったエンティティがもう存在しないことを知り、応答をリッスンする方法が必要です。つまり、返信を破棄する場合はエラーをスローしたいのですが。
そのようなことは可能ですか、それとも別のチャネルを使用して、応答の受信時にリクエスターまたはある種のACKをチェックする必要がありますか?
REPソケットのZeroMQドキュメントには、次のように記載されています。
元のリクエスターがもう存在しない場合、応答は黙って破棄されます。
私のプロジェクトでは、元のリクエストを行ったエンティティがもう存在しないことを知り、応答をリッスンする方法が必要です。つまり、返信を破棄する場合はエラーをスローしたいのですが。
そのようなことは可能ですか、それとも別のチャネルを使用して、応答の受信時にリクエスターまたはある種のACKをチェックする必要がありますか?
zmq ソケットはそれを知る方法がないため、別のチャネルを使用してリクエスターを追跡する必要があります。
その目的のために要求/応答ソケットを逆に使用できますが、本質的に応答を行う前に別の要求/応答を行うため、パフォーマンスの問題が発生する可能性があります。
Entity1 Entity2
Request -------------- Reply
Reply -------------- Request
そしてコミュニケーションの流れは
Entity1 --------> request -----> Entity2
Entity1 <------- request <----- Entity2
Entity1 -------- reply ------> Entity2
Entity1 <------- reply ------- Entity2
これにより、エンティティ 1 が応答を受信できないことが保証されますが、応答の可能性が向上します。
ただし、リクエスタの状態をリプライヤに知らせるよう要求するのは得策ではないかもしれません。