在 REP 套接字的ZeroMQ 文档中,它说:
如果原始请求者不再存在,则回复将被静默丢弃。
在我的项目中,我想通过某种方式知道发出原始请求的实体不再存在并听取回复。换句话说,如果要丢弃回复,我希望抛出错误。
这样的事情是否可能,或者我必须在收到回复后使用某个单独的渠道来检查请求者或某种 ACK?
您应该使用单独的通道来跟踪请求者,因为 zmq 套接字无法知道这一点。
为此,您可以反向使用请求/回复套接字,但可能会遇到性能问题,因为本质上您将在做出回复之前发出另一个请求/回复。
Entity1 Entity2
Request -------------- Reply
Reply -------------- Request
和通信流将是
Entity1 --------> request -----> Entity2
Entity1 <------- request <----- Entity2
Entity1 -------- reply ------> Entity2
Entity1 <------- reply ------- Entity2
现在,这提供了 Entity1 不能用于接收回复的保证,但提高了它的概率。
但是,要求回复者知道请求者状态可能不是一个好主意。