【问题标题】:Paho-MQTT check message queue sizePaho-MQTT 检查消息队列大小
【发布时间】:2019-06-17 14:02:51
【问题描述】:

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

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

【问题讨论】:

    标签: raspberry-pi mqtt paho


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,但您能否详细说明答案的最后一部分? “让收到的消息回调放置消息......”此外,它是托管网络的树莓派。是否有一些 mosquitto 命令可以为我提供有关队列的信息?
    • 我没有写足够多的 python 来给你一个像样的例子,但是一个线程消耗的排队工作是你搜索的标准。不,没有办法询问经纪人,因为它根本不跟踪它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2021-05-17
    • 1970-01-01
    • 2011-08-06
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多