我正在阅读ZeroMQ Guide,并遇到以下有关ROUTER
套接字和身份的段落:
使用
ROUTER
套接字与特定对等设备对话的应用程序可以如果逻辑地址已建立必要的地址,则将其转换为身份哈希表。因为ROUTER
套接字仅声明一个主机的标识当连接到特定的对等方时,该对等方发送消息只能真正回复邮件,不能自发与同伴交谈。即使您颠倒规则并使
ROUTER
连接到对等体,而不是等待对等体连接到ROUTER
。但是,您可以强制ROUTER
套接字在其中使用逻辑地址。身份的地方。zmq_setsockopt
参考页称此设置套接字标识。
根据此段落,“您只能真正回复一条消息,不能自发地与同伴交谈”,这意味着ROUTER
不能向特定的[ C0],但是下句话暗示如果您强制路由器套接字使用逻辑地址,则可以执行以下操作:“但是,您可以强制DEALER
套接字使用逻辑地址代替其标识” 。这部分使我感到困惑,因为他们只是说您不能自发地将消息从路由器发送给经销商,但是现在他们声称可以。如果您点击指南的ROUTER
链接,您会看到这段话之后,他们会说“它的工作原理如下”,但是他们给出的步骤似乎并没有弄清如何从[ C0]到特定的this,并将响应返回到原始ROUTER
。
我的问题:是否可以将单个DEALER
套接字发送请求到特定的ROUTER
(很多)套接字,然后ROUTER
将请求的结果发送回[ C0]?如果可能的话,怎么办呢?
后续问题:如果不可能,是否有更好的插座组合来解决这个问题?
下面是我预期的设计的粗略图:
DEALER
[基本上,客户端将请求发送到1台特定的服务器,该服务器处理该请求并将请求的结果返回给客户端。客户端现在具有该结果,并且知道在其上处理的服务器。
Q:单个
DEALER
套接字是否可以将请求发送到特定的ROUTER
(多个)套接字,而可以将请求的结果发送回给ROUTER
?如果可能的话,怎么办呢?
不,据我所知,这是不可能的-它尝试使用DEALER
反模式。
如果从未使用过ZeroMQ,在这里您可以先看看DEALER
,然后再深入研究更多细节]]
虽然可以通过身份提示来调整ROUTER
端,但您的问题在DEALER/ROUTER
端失败,在这种情况下,公平队列和循环策略会破坏您希望拥有的1:1关系,并且"ZeroMQ Principles in less than Five Seconds"
ZeroMQ原型在内部很聪明并且是多层的,这超出了您在调用任何API方法时通常使用的原型。对内部工作的一些了解(简化,也许过分简化)可能会对此有所帮助:
ROUTER