zmq_send() 在哪里发送多个连接?

Where does zmq_send() send with multiple connections?

假设我有 ZMQ_PUSH 套接字,连接到多个对等点,我使用 zmq_send() 通过这些套接字发送内容。

我现在正在寻找几个小时,但在 ZMQ 文档中找不到我的消息将发送到哪里。

合理的假设是,它会被发送到所有连接的对等点,但他们说正在使用循环算法,这让我有点困惑。这是否意味着我应该在有连接的情况下多次发送相同的消息?

Q : "Where does zmq_send() send with multiple connections?"

它确实会根据实际使用的原型发送消息。

PUB/SUB 将每条消息发送给所有积极订阅主题的对等点(左侧,负载的二进制匹配为字符串),而一些v3 之前版本中的内部细节实际上将任何消息物理地移动到所有对等点(并且 SUB-side Context()-instances,一种 ALAP,执行了主题过滤 ), 自 v3+.

之后就不是这样了

PUSH/PULL 没有这个 "promise",所以最好把 PUSH 端想象成一个作业队列指挥官,并且每个PULL端工作人员从作业队列接收(在这里以循环方式)下一个任务,就像负载平衡器一样。

彼此的内置原型 - REQ/REP, XPUB/XSUB, DEALER/ROUTER, PAIR/PAIR, ... - 有一个类似的公式 "promised-behaviour", 所以 ZeroMQ 服务可以建立在结合这些messaging/signalling 应用程序将琐碎的原型转化为一些更复杂和结构化的组行为。

Q : "The reasonable assumption is, that it will be sent to all connected peers"

如果是这样,PUSH/PULL "promised-behaviour" 的密钥 属性 就会丢失,这与 PUB/SUB 原型没有区别(开发两个做同样事情的东西更没有意义,不是吗?)


如果你从未使用过 ZeroMQ,
你可能会喜欢先看看
,然后再深入了解更多细节