我在 Raspberry Pi CM4 模块上使用 Python Paho 客户端,我有一个关于离线队列的问题
mqtt_client.max_queued_messages_set(100)
。
有什么办法可以监控这个队列吗?我想获取长度并在电源故障时对队列执行一些操作。我已确认我正在使用最新版本的 Paho 客户端、Python 以及 Paho 客户端中的 API 版本 2。
目前该库不提供可以为您提供队列中消息数量的函数/属性。但是,如果您在队列达到/超过容量时拨打
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
),则可以这样做。