Mqtt 命令以显示发送给MOSQUITO代理的所有消息?

Mqtt 命令以显示发送给MOSQUITO代理的所有消息?,mqtt,mosquitto,paho,broker,Mqtt,Mosquitto,Paho,Broker,我一直在使用以下命令查看Mosquitto代理上发布的消息: mosquitto_sub -h IP_ADDRESS -t TOPIC_NAME 但是,当我运行此命令时,我只能看到最近的消息,而不是所有已发布的消息。在Mqtt客户机中,我可以看到传递的消息 是否有查看传递给代理的所有消息的命令 该命令仅在我们开始订阅时显示消息 我在消息属性中使用了值2表示服务质量。MQTT作为协议不会存储所有消息,无论它们发布/订阅的服务质量如何 同样重要的是要记住,QOS一次只适用于一条腿。例如,在QOS2

我一直在使用以下命令查看Mosquitto代理上发布的消息:

mosquitto_sub -h IP_ADDRESS -t TOPIC_NAME
但是,当我运行此命令时,我只能看到最近的消息,而不是所有已发布的消息。在Mqtt客户机中,我可以看到传递的消息

  • 是否有查看传递给代理的所有消息的命令
  • 该命令仅在我们开始订阅时显示消息

  • 我在消息属性中使用了值2表示服务质量。

    MQTT作为协议不会存储所有消息,无论它们发布/订阅的服务质量如何

    同样重要的是要记住,QOS一次只适用于一条腿。例如,在QOS2上发布的消息确保到达代理,但不承诺将其交付给任何客户端,这取决于这些客户端订阅主题的QOS

    MQTT将为已知客户机排队消息,前提是该客户机之前已订阅QOS 1或2,并在CleanseSession标志设置为false的情况下重新连接。此连接需要与上一个会话完全相同的客户端id

    因此,如果运行以下命令:

    mosquitto_sub -h [ip addr] -t [topic] -c -i [clientid] -q 2
    
    如果再次运行同一命令时断开连接(kill
    mosquitto\u sub
    ),这将创建一个持久会话(确保保持
    [clientid]
    同样,在客户端断开连接时,代理将传递所有发送的消息。但是,在会话建立之前,无法通过第一次运行该命令来发布消息

    • -c
      告诉客户端将cleanSession标志设置为false
    • -i[clientid]
      设置客户端id
    • -q 2
      将订阅QOS设置为2

    如果这是为了调试一个问题,那么一个可能的选择是提高MOSQUITO实例的日志记录级别,然后它将绝对记录所有内容,但这将产生大量输出。

    Thank you@hardillb,我一定会尝试此命令