raspberry-pi - Paho-MQTT 检查消息队列大小
问题描述
我正在从 Arduino 发布 MQTT 消息,并从 Raspberry Pi 订阅这些消息。有时发布的速度比 Raspberry 可以接收(和处理)的速度更快。
我正在寻找一种方法来检查在 Raspberry 端排队的消息数量。我正在使用Paho-MQTT。我只看到可以设置最大队列大小,但是如何检查当前队列大小?(如果可能的话。)
解决方案
代理中没有队列,所有消息都在发布时交付。
Paho 客户端是单线程的,收到的消息回调在网络线程上处理,因此消息可能会在网络堆栈上备份(对于 QOS0 消息)。QOS1/2 消息将在代理中备份,直到当前消息的 QOS 握手完成。
max_queued 消息设置是关于客户端在阻塞之前将接受多少 QOS 1/2 消息来发布,而不是它将排队多少传入消息。
如果您想以可测量的方式对消息进行排队,则让 Message received 回调将消息放置到本地队列中,并让第二个线程(或线程池,如果它们可以并行处理)从本地队列中获取消息。
推荐阅读
- ruby-on-rails - Rails 6获取2个时间戳的差异并分配给查询中的一个新字段
- java - Spring Boot - 使用自定义 yml 标签扩展 yml 配置
- reactjs - 为什么扩展运算符会直接影响状态而有时不会?(反应)
- python - 合并具有不同索引频率的两个数据帧?(每周与每天)
- asp.net-core - 如何调试 ASP.NET Core 3 源代码?无源链接
- xml - 模糊搜索FIELD azure中的全局列表
- robotframework - 机器人框架:如何在运行时或变量中设置 Excel 文件名和工作表名称?
- c# - 您可以订购 X509Certificate2Collection 以使用最新证书吗?
- angular - 如何调试或修复 ng serve 给出 400 错误?
- mysql - 用户注册后,将来自 amazon cognito 的用户数据从 laravel 同步到我的 mysql 数据库