ZMQ模式;发送然后接收

时间:2014-10-21 13:48:10

标签: zeromq pyzmq

我一直在阅读zmq设计模式,但我似乎找不到适合我的需求。

1. Box A sends info (json) to Box B and C; B and C gets different info from each other  
2. Boxes B and C do some work based on info received from Box A  
3. After finishing the work, Boxes B and C sends result back to Box A    

转发设备(http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/devices/forwarder.html)可以实现步骤1和2而不是3,是否正确?

我可以使用任何模式来实现吗? 这是简单的请求/回复模式吗? 如果是这样,是否有一个集中的请求/回复模式,以便Box A不会选择Box B和C,而是Box A将信息发送到某个中心,它知道发送到Boxes B和C并将结果发送回Box A?

2 个答案:

答案 0 :(得分:2)

这看起来像指南中的一个非常基本的负载平衡模式。 A是控制器,将是一个路由器,而工人B和C是经销商。消息传递很简单;经销商向控制器发送初始消息说“我准备好了”#34;。然后控制器将工作交给现成的工人。

这种拓扑结构与杰森的答案相反。您选择的只取决于您希望如何扩展您的应用程序。当控制器分发工作时,它确实应该交给准备好处理它的工人。保证负载均衡模式。

答案 1 :(得分:1)

这是一个非常基本的经销商/路由模式。

DEALER套接字是循环法,这意味着它会向框B发送一个请求,然后在框C旁边发送一个请求,然后在框B旁边发送,等等。如果你想在工人完成之前保留任何工作,你只需要知道现有工人的数量。

在方框B和方框C上,使用ROUTER套接字(如果您的用例很简单,则使用REP套接字,但这会限制您的选择)。接收工作,工作,发回,等待更多工作。

the guide中有很多这样的例子,我建议你阅读。