ZeroMQ REQ-REP:检查回复是否已通过

时间:2012-03-20 21:14:55

标签: request zeromq reply

ZeroMQ documentation的REP套接字中,它说:

  

如果原始请求者不再存在,则回复将被静默丢弃。

在我的项目中,我希望能够知道发出原始请求的实体不再存在并听取回复。换句话说,如果要丢弃回复,我想要抛出一个错误。

这样的事情是否可能,或者我必须使用某个单独的频道来检查请求者或收到回复后的某种ACK?

1 个答案:

答案 0 :(得分:1)

您应该使用单独的通道来跟踪请求者,因为zmq套接字无法知道这一点。

您可以为此目的反过来使用请求/回复套接字,但可能会遇到性能问题,因为在回复之前,您将会发出另一个请求/回复。

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

和沟通流程

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

现在这提供了保证Entity1不可用于接收回复但提高了它的概率。

然而,将请求者的状态告知回复者可能不是一个好主意。