MQTT Paho 客户端 Python

问题描述 投票:0回答:1

我在 Raspberry Pi CM4 模块上使用 Python Paho 客户端,我有一个关于离线队列的问题

mqtt_client.max_queued_messages_set(100)

有什么办法可以监控这个队列吗?我想获取长度并在电源故障时对队列执行一些操作。我已确认我正在使用最新版本的 Paho 客户端、Python 以及 Paho 客户端中的 API 版本 2。

mqtt paho
1个回答
0
投票

目前该库不提供可以为您提供队列中消息数量的函数/属性。但是,如果您在队列达到/超过容量时拨打

MQTTErrorCode.MQTT_ERR_QUEUE_SIZE
,您将得到
publish
(这样可以提供您需要的信息)。 此问题的作者似乎有类似的目标,因此您可能希望评论/支持该问题。

队列实际上是

_out_messages
的内容,如在 publish 函数中的
here
所示:

if self._max_queued_messages > 0 and len(self._out_messages) >= self._max_queued_messages:
   message.info.rc = MQTTErrorCode.MQTT_ERR_QUEUE_SIZE
   return message.info

没有什么可以阻止您在代码中进行相同类型的检查,但请注意,前导下划线表示该变量是私有的(因此可能会在将来的版本中更改),并且还要小心引用如果您在单独的线程中运行消息循环(使用

_out_message_mutex
),则可以这样做。

© www.soinside.com 2019 - 2024. All rights reserved.