为什么 zmq 将多条消息打包到一个 TCP 帧中?

Why does zmq pack several messages to one TCP frame?

我使用带有 ZMQ_DONTWAIT 标志的 ZMQ_PUSH 套接字发送消息。每条消息相隔 300 毫秒(所以我严重怀疑,我的线程调度是如此关闭)。然而,有时会有几条(到目前为止最多 7 条)消息被打包到同一个 TCP 帧中,但我在 tcpdump 中看不到任何重传或重新连接。

为什么会这样?我如何确定何时发送我的消息?

Q : "And how can I determine when my message would be sent?"

您几乎没有机会知道分派发送的消息何时会最终到达线路级别。

这是一个 属性 的概念,不是错误。它在文档中有明确的解释,因为 API v2.0+(而且很可能永远如此)。可以公平地补充一点,对 zmq_context 实例的内部机制的一些洞察可能来自 socket_monitor 在较新的 API 版本中可用。