我使用ZMQ允许客户端连接到服务器并向其发送命令。命令以高频率进入,不需要任何回复。我正在考虑使用REQ / REP套接字,但发送空回复感觉很浪费。我不希望使用PUB / SUB或PUSH / PULL,因为我希望客户端启动连接。在这里使用比REQ / REP更合适的模式吗?
答案 0 :(得分:0)
(cit。:)因为我希望客户端启动连接。 (?)
总是可以让客户启动连接,因此使用 PUSH/PULL
可扩展的形式通信模式似乎非常符合目标,即使使用反向.bind()/.connect()
调用,或者您的意思是别的什么?
如果由于某些其他原因对PUSH/PULL
(目前为止观察到的)保持负面,可能会逃避严格的硬连线步骤锁定(并且还有可能陷入无法解决的无法解决的死锁问题使用它来表示REQ/REP
- 首先是通过扩展原型 XREQ/XREP
(请参阅API文档了解实施细节)
或
(如果使用API 4.2+)
通过 REQ
解锁 .setsockopt( ZMQ_REQ_RELAXED, 1 )
-hardwired FSA职责上面提到的事实是REP
答案永远不会从服务器端发送/在REQ
侧客户端处理。如果采用这种方式,请谨慎,因为ZMQ_REQ_CORRELATE
可能设置为1,消息将成为多帧(d),因为REQ-id#
将被加载到新注入的“服务“-frame,在REQ
的客户端有效负载进入线路之前。这可能会混淆服务器部分的消息接收/处理代码。
对于更勇敢的设计师,可以使用PAIR/PAIR
形式模式原型,因为它没有灌输任何严格的形式行为,但仔细阅读API规范。