没有回复的请求的ZMQ模式

时间:2017-05-09 17:15:27

标签: zeromq

我使用ZMQ允许客户端连接到服务器并向其发送命令。命令以高频率进入,不需要任何回复。我正在考虑使用REQ / REP套接字,但发送空回复感觉很浪费。我不希望使用PUB / SUB或PUSH / PULL,因为我希望客户端启动连接。在这里使用比REQ / REP更合适的模式吗?

1 个答案:

答案 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规范。