首页 > 解决方案 > Paho-MQTT 检查消息队列大小

问题描述

我正在从 Arduino 发布 MQTT 消息,并从 Raspberry Pi 订阅这些消息。有时发布的速度比 Raspberry 可以接收(和处理)的速度更快。

我正在寻找一种方法来检查在 Raspberry 端排队的消息数量。我正在使用Paho-MQTT。我只看到可以设置最大队列大小,但是如何检查当前队列大小?(如果可能的话。)

标签: raspberry-pimqttpaho

解决方案


代理中没有队列,所有消息都在发布时交付。

Paho 客户端是单线程的,收到的消息回调在网络线程上处理,因此消息可能会在网络堆栈上备份(对于 QOS0 消息)。QOS1/2 消息将在代理中备份,直到当前消息的 QOS 握手完成。

max_queued 消息设置是关于客户端在阻塞之前将接受多少 QOS 1/2 消息来发布,而不是它将排队多少传入消息。

如果您想以可测量的方式对消息进行排队,则让 Message received 回调将消息放置到本地队列中,并让第二个线程(或线程池,如果它们可以并行处理)从本地队列中获取消息。


推荐阅读