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

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

但是,要求回复者知道请求者状态可能不是一个好主意。

于 2012-06-20T23:11:21.117 回答