与ZeroMQ的双向通信异步

问题描述 投票:0回答:1

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

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

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人员与适当模式相关的一些方向,以实现两个客户端节点之间的双向异步消息。

python c++ sockets client-server zeromq
1个回答
1
投票

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

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

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

如果你在每个dealer套接字上进行多次连接,即直接连接到其他客户经销商套接字,你将只遇到循环问题。

© www.soinside.com 2019 - 2024. All rights reserved.