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