首页 > 解决方案 > 为什么 zmq 将多条消息打包到一个 TCP 帧中?

问题描述

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

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

标签: c++csocketszeromq

解决方案


“我如何确定我的消息何时发送?”

欢迎来到 Zen-of-Zero 的 ZeroMQ 艺术。

您有零机会知道被分派发送的消息何时最终会下降到线路级别。

这是概念的属性,而不是错误。它在文档中明确解释,因为 API v2.0+(并且很可能永远保持如此)。公平地补充一点,对 -instance 内部性的一些见解zmq_context可能来自socket_monitor更新的 API 版本中的可用内容。


如果您从未使用过ZeroMQ
您可能会喜欢先看看ZeroMQ -不到五秒钟的原则
,然后再深入了解更多细节




推荐阅读