2016-08-13 141 views
-1

望着http://zguide.zeromq.org/page:all#toc76的示意图:异步客户端在ZeroMQ

enter image description here

据我了解,路由器需要频繁轮询从每个客户的听到。

然后,路由器将任何客户端消息转发给DEALER。

问题1:ROUTER与DEALER的连接是否异步?

问题2:对于服务器的经销商到N DEALER工人,必须在服务器的经销商处进行轮询?

综观全书的文字:

客户端每秒一次发送的请求,并得到零发或多个来回复。

问题3:我想0来自死亡的工人,即盒子/线程崩溃?怎么能有一个以上的回复回到客户端?

问题4:经销商通讯的经销商是否同步?

+0

为什么*你* downvote? –

回答

1

Q1:没有连接,它的代码,类似:

while(router.receive(x)) 
{ 
    dealer.send(x) 
} 

注:不是真正的代码,需要处理路由信息和标记结束帧等

Q2:是的,假设你的工作人员对这些请求做出回应如果工作人员正在发送回复,并且您没有在服务器的经销商处进行投票,那么工作人员最终会在排队邮件达到“高水位”时阻止工作。

Q3:取决于用例。经销商/路由器插座没有发送/接收消息数量的条件(不同于REQ/REP是1:1)。例如,如果工作人员完成的任务可能需要很长时间,则可能需要发送中间的“x%完成”消息。

问题4:请参阅问题3的答案,我将添加:取决于您是否希望它。套接字不强制它,你可以将它编码为同步或异步。

+0

每#2听起来像经销商N N交易员需要投票。经销商与经销商的关系如何? –

+0

如果您将其视为经销商之间的同步连接(即1:1已发送:收到的消息),那么您可以在每次发送后调用接收。否则,你可能需要进行民意调查。 – David

+0

其实,服务器的'ROUTER'如何为'DEALER'客户端轮询?到目前为止,我只看到端口上的轮询,而不是单独的客户端(连接到相同的绑定端口)? –