与ZeroMQ的双向通信异步

时间:2018-02-23 05:04:53

标签: python c++ sockets client-server zeromq

我理解different socket and patterns types因为我有兴趣让几个客户以协作的方式相互交谈,可能有服务器代理或中间件。在相关实体之间接收和转发消息会很有用。< / p>

我的学习/情况案例如下: 我想在我的图表中通过步数交互来表示工作流程。我希望不要对我的图表不方便,我只是提到它以更好地说明我的情况

enter image description here

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

因为所有这些...我一直在阅读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人员与适当模式相关的一些方向,以在两个客户端节点之间实现双向异步消息。

1 个答案:

答案 0 :(得分:1)

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

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

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

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