如何在MQTT/Find MQTT-latency中放置队列输入和队列输出时间戳

如何在MQTT/Find MQTT-latency中放置队列输入和队列输出时间戳,mqtt,mosquitto,Mqtt,Mosquitto,我想在MQTT队列中查找排队时间,例如事件进入队列时的到达时间,以及从队列中获取事件时的摄取时间。减去这两个时间可以给我排队延迟。如何找到它?MQTT中没有队列(除了具有高QOS订阅的脱机客户端),消息在代理收到主题后立即传递给订阅主题的所有客户端 如果您想知道代理处理新消息需要多长时间,那么它将取决于代理、它运行的机器、订阅主题的客户端数量(以及QOS)以及负载级别。您可以通过增加给定代理上的日志记录来计算,但这是特定于代理的,日志记录级别的任何增加都可能会增加延迟。您最好查看网络流量以跟踪入

我想在MQTT队列中查找排队时间,例如事件进入队列时的到达时间,以及从队列中获取事件时的摄取时间。减去这两个时间可以给我排队延迟。如何找到它?

MQTT中没有队列(除了具有高QOS订阅的脱机客户端),消息在代理收到主题后立即传递给订阅主题的所有客户端


如果您想知道代理处理新消息需要多长时间,那么它将取决于代理、它运行的机器、订阅主题的客户端数量(以及QOS)以及负载级别。您可以通过增加给定代理上的日志记录来计算,但这是特定于代理的,日志记录级别的任何增加都可能会增加延迟。您最好查看网络流量以跟踪入站和出站消息,像wireshark这样的工具可能是最好的。

感谢您的回答,但wireshark无法完全解决我的问题,因为我希望使用排队时间和其他时间,如每个事件的检测时间。在大多数情况下,我需要找到特定时间窗口的最小(排队)时间。另外,在我的实验中,我交替使用QoS 0、1和2。正如所说的,对于正常的MQTT消息传递,没有排队,对于高QoS传递,您需要考虑多部分确认。我理解您所说的,但问题是MQTT代理正在将流发送到具有阻塞性质的CEP引擎,这意味着如果CEP引擎正在处理,它将不欢迎来自代理的任何消息。我能够在Android设备上解决这个问题,通过使用阻塞队列将消息发送到CEP引擎。但现在我遇到了IoT服务器的问题,在这种情况下,MQTT代理获取流数据并将其发送到CEP引擎。我想发现,在这种情况下,队列相信代理将持久化流,除非它们被CEP引擎使用,否则它们将在客户端TCP堆栈上备份QOS 0消息,对于QOS1/2,代理将阻止消息,直到QOS握手完成,但这由代理的配置方式控制(
MOSQUITO上的最大机上消息数