1

我正在使用 NetMQ 将消息从许多客户端发送到接收消息并处理它们的服务器。如果我使用pub/sub模式,我可以(ab)使用订阅者套接字并将其用于服务器,客户端将成为发布者(相反的流程,不是吗?)。但是,我无法向客户发送确认消息。

如果我使用该REQ/RESP模式,我可以使用服务器的响应套接字,甚至可以发送一个可以被客户端接收的确认消息。但是,如果服务器错过了来自客户端的消息,我无法重新发送消息(在等待 a 之后timespan),因为我收到异常

Req.XSend - 无法发送另一个请求

- 即使在断开客户端套接字并关闭它之后(它接缝服务器套接字会跟踪它)。

最后,根据文档,我不确定这是否Dealer/Router是正确的模式。由于我很确定我陷入了一个非常常见的情况,是否有任何模式可以使用 NetMQ 实现这个场景?

4

1 回答 1

2

您遇到了一个非常常见的问题,在 0MQ 用语中通常称为“可靠的请求-回复”。

指南中描述了几种方法,第一种是“懒惰的海盗”。在其中,您使用所描述的 REQ/RESP 套接字对(尽管 REQ/ROUTER 也可以正常工作,并且可能对多个客户端更好)。解决方案是如果您的 ACK 超时并创建一个新的,则处理该套接字。

该指南确实指出,将 DEALER 换成 REQ 可以解决问题,但增加了必须自己跟踪信封。除非您出于其他原因需要在客户端进行异步发送/接收,否则我会遵循他们的建议并坚持使用 REQ/ROUTER。

可以在 GitHub 上找到此模式的示例实现:https ://github.com/NetMQ/Samples/tree/master/src/Pirate%20Pattern

于 2017-03-31T00:30:52.687 回答