【发布时间】:2019-06-17 14:02:51
【问题描述】:
我正在从 Arduino 发布 MQTT 消息,并从 Raspberry Pi 订阅这些消息。有时发布的速度比 Raspberry 可以接收(和处理)的速度更快。
我正在寻找一种方法来检查在 Raspberry 端排队的消息数量。我正在使用Paho-MQTT。我只看到可以设置最大队列大小,但是如何检查当前队列大小? (如果可能的话。)
【问题讨论】:
标签: raspberry-pi mqtt paho
我正在从 Arduino 发布 MQTT 消息,并从 Raspberry Pi 订阅这些消息。有时发布的速度比 Raspberry 可以接收(和处理)的速度更快。
我正在寻找一种方法来检查在 Raspberry 端排队的消息数量。我正在使用Paho-MQTT。我只看到可以设置最大队列大小,但是如何检查当前队列大小? (如果可能的话。)
【问题讨论】:
标签: raspberry-pi mqtt paho
代理中没有队列,所有消息都在发布时交付。
Paho 客户端是单线程的,收到的消息回调在网络线程上处理,因此消息可能会在网络堆栈上备份(对于 QOS0 消息)。 QOS1/2 消息将在代理中备份,直到当前消息的 QOS 握手完成。
max_queued 消息设置是关于客户端在阻塞之前将接受多少个 QOS 1/2 消息来发布,而不是它会排队多少传入消息。
如果您想以可测量的方式对消息进行排队,则让 Message received 回调将消息放入本地队列并让第二个线程(或线程池,如果它们可以并行处理)从本地获取消息排队。
【讨论】: