与 ZeroMQ 的双向通信异步

Bidirectional Communication Async with ZeroMQ

我理解 different socket and patterns types 因为我有兴趣让多个客户端以协作的方式相互交谈,可能有服务器代理或中间件。将有助于在相关实体之间接收和转发消息.

我的 study/situation 案例如下: 我想在我的图表中通过步骤数字交互来表示工作流程。我希望不要对我的图表造成不便,我只是参考它来更好地说明我的情况

在两个客户端节点之间实现双向异步消息以交换消息的合适模式是什么?

因为所有这些......我一直在阅读 ZMQ_ROUTERZMQ_DEALER 套接字,它们似乎是一个不错的选择,因为正在进行和传入的路由策略。

我了解从所有连接的对等点(在 ZMQ_DEALER 中)对每条接收到的消息进行排队的过程以及发送的每条消息在所有连接的对等点之间循环

在这种情况下循环是什么意思?

随着 ZMQ_ROUTER 发生与传入路由策略类似的事情...

我一直在测试 Shared Queue Dealer and Router sockets samples 但这个过程是同步的,因为我在 REQ-ROUTER-DEALER-REP 设置中使用过它,但在那种情况下 REQ -> ROUTER 发送没有目标另一端的特定处理程序,它只是转到任意一个,ROUTER 确保回复返回到原始发件人。

我认为我的情况与 zeromq 邮件列表中的 to this Jake's question 相似

经纪人的做法ROUTER-DEALER……想想看对不对? 或者通信可能是客户端到客户端直接?

我问这一切是为了分享我的想法,并学习和接收你们 ZMQ 人员关于在两个客户端节点之间实现双向、异步消息的适当模式的一些方向。

在您的服务器代码上,您想 运行 一个 zmq_routerbind 它到一个众所周知的端口。

然后每个客户端应用程序应该创建一个 zmq_dealer 套接字和 connect 到路由器绑定到的 ip 和端口。在连接之前,您可能希望在可用于识别每个客户端的套接字上设置一个 id。

为了确保客户端将消息发送到正确的位置,我们需要将他们希望与之通话的客户端的 ID 附加为第一个消息部分,以允许它通过路由器路由到正确的客户端。

如果您对每个 dealer 套接字进行多次连接,即直接连接到其他客户经销商套接字,您只会遇到循环法问题。