请考虑以下设置。我connect()
多个DEALER
套接字(客户端)到另一个DEALER
,绑定到一个地址(服务器)。其中一个客户端在循环中调用 recv()
,而其他客户端可能偶尔会向服务器发送一些内容。
服务器套接字是否会尝试将发送的消息分发给那些没有收到任何内容的客户端?我无法找到经销商套接字在ZeroMQ指南和zmq_socket
联机帮助页中如何处理工作分配。
我使用ZMQ 4.1。
答案 0 :(得分:2)
安全的方法是查看相应的版本 API man-page
以获取详细信息。并非所有项目都可能使用最新的API,原因是互操作性原因,任何交易对手都没有任何较新的版本API绑定可用。然后最古老的规则是人群。
ZeroMQ 2.1.11 API
不允许DEALER/DEALER
ZeroMQ 4.2.0 API
确实
无论如何,API man-pages
始终是值得详细说明的来源:
4.2.0
ZMQ_DEALER
类型ZMQ_DEALER
的套接字是用于扩展请求的高级模式/回复套接字。发送的每条消息都在所有连接的对等体中循环,并且每个接收到的消息都是从所有连接的对等体中排队等级的。
当ZMQ_DEALER
套接字由于到达时已进入静音状态所有对等体的高水位标记,或者如果根本没有对等体,则套接字上的任何zmq_send(3)
操作都应该阻塞,直到静音状态结束或者至少有一个对等体可用于发送;消息不会被丢弃。
当ZMQ_DEALER
套接字连接到ZMQ_REP
套接字时,发送的每条消息都必须包含空消息部分,分隔符,后跟一个或多个正文部分。
ZMQ_DEALER
特征摘要
Compatible peer sockets: ZMQ_ROUTER, ZMQ_REP, ZMQ_DEALER
Direction: Bidirectional
Send/receive pattern: Unrestricted
Outgoing routing strategy: Round-robin
Incoming routing strategy: Fair-queued
Action in mute state: Block
答案 1 :(得分:1)
我写了一个小测试程序,发现经销商套接字不知道另一端是否正在接收。因此,它会尝试将传出消息分发给所有连接的对等体。