我使用 ZMQ 允许客户端连接到服务器并向其发送命令。命令传入的频率很高,不需要任何回复。我正在考虑使用 REQ/REP 套接字,但发送空回复感觉很浪费。我不想使用 PUB/SUB 或 PUSH/PULL,因为我希望客户端启动连接。是否有比 REQ/REP 更适合在这里使用的模式?
(引用:)因为我希望客户端发起连接。(?)
人们总是可以让客户端发起连接,因此使用PUSH/PULL可扩展的正式通信模式似乎非常符合目标,即使是反向.bind()/.connect()调用,还是您有其他意思?
如果PUSH/PULL出于某种其他原因对(到目前为止观察到的)保持负面态度,则可能会逃避严格的硬连线步进锁定(以及陷入与本身相关的不可挽救的死锁的风险)——第REQ/REP
一个
通过扩展原型XREQ/XREP(请参阅 API 文档了解实现细节)
或
(如果使用 API 4.2+)
通过解锁REQ-hardwired FSA 职责.setsockopt( ZMQ_REQ_RELAXED, 1 ),考虑到上述事实,REP答案永远不会从服务器端发送/在服务器上处理REQ端客户端。如果采用这种方式,请小心,因为ZMQ_REQ_CORRELATE可能会设置为 1,其中消息将碰巧变成多帧(d),因为它们将在 的客户端REQ-id#之前加载到新注入的“服务”帧中REQ-有效负载连接到电线上。这可能会混淆消息接收/处理代码的服务器部分。
对于更勇敢的设计师,可以使用PAIR/PAIR形式模式原型,因为它不会灌输任何严格的形式行为,但请仔细阅读 API 规范。
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |