区别在于PUB套接字将同一消息发送给所有订阅者,而PUSH则在其所有连接的PULL套接字之间执行轮询。在您的示例中,如果您只从根节点发送单个消息,则所有订阅者都会收到它(除了慢速订阅者等),但只有1个工作进程。发布/订阅模式用于按主题进行广泛的消息分发。推入/拉取模式实际上是一种流水线机制。你的推送/拉取示例似乎试图做负载平衡,这很好,但由于其他问题,请求/响应可能更适合这种情况。看起来这里的“问题”在0MQ指南的相同部分中描述:push/pull ventilator example。
SUB
和PULL
套接字有一个共同的特性,即在客户端代码没有进行recv
操作时,它们会从可用消息中消耗内容。因此,在您的示例中,client[2]将获取任何情况下的消息,而当client[1]重新连接时,它将开始获取新的消息。重要的是,这两种套接字类型都没有“寻址”到特定的客户端。 - SteveLove