如何解决显示所有发送给 Mosquitto Broker 的消息的命令?
我一直在使用以下命令在 Mosquitto 代理上查看已发布的消息:
mosquitto_sub -h IP_ADDRESS -t TOPIC_NAME
但是,当我运行此命令时,我只能看到最近的消息,而不是所有已发布的消息。在 Mqtt 客户端,我可以看到已发送的消息。
- 是否有命令可以查看发送给代理的所有消息?
- 该命令仅在我们开始订阅时显示消息?
我在消息属性中为服务质量使用了值 2。
解决方法
MQTT 作为协议不会存储所有消息,无论它们是在什么 QOS 上发布/订阅的。
同样重要的是要记住 QOS 一次仅适用于一条腿。例如。确保在 QOS2 上发布的消息到达代理,但不承诺将其交付给任何客户端,这取决于这些客户端订阅主题的 QOS。
如果已知客户端之前已在 QOS 1 或 2 订阅并重新连接时将 cleanSession 标志设置为 false,则 MQTT 将为已知客户端排队消息。此连接需要与前一个会话完全相同的客户端 ID。
因此,如果您运行以下命令:
mosquitto_sub -h [ip addr] -t [topic] -c -i [clientid] -q 2
这将创建一个持久会话,如果您在再次运行相同的命令时断开连接(杀死 mosquitto_sub
)(确保保持 [clientid]
相同,代理将传递同时发送的所有消息)客户端断线了,但是第一次运行这个命令是没有办法在会话建立之前得到发布的消息的。
-
-c
告诉客户端将 cleanSession 标志设置为 false。 -
-i [clientid]
设置客户端 ID -
-q 2
将订阅 QOS 设置为 2
如果这是为了调试问题,那么一种可能的选择是提高 mosquitto 实例的日志记录级别,然后它会记录所有内容,但这会产生大量输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。