Publusher发送消息-m "hello"
使用命令-t hello
主题mosquitto_pub -h 172.17.*.* -t hello -m "hello" -d
。订户看到消息-m "hello"
仅当该主题-t hello
连接处于活动状态。但是,如果用户没有签约的-t hello
话题,出版商仍然将在-t hello
主题的消息,那么当你尝试订阅此主题mosquitto_sub -h 172.17. *. * -t hello
订户不从出版商接收发送的消息。
阅读文档后,打破了几个经纪人,我只取得了一个事实,即你可以看到最后一条消息,如果你把国旗在发布-r
这样的 - -mosquitto_pub -h 172.17. *. * -r -t hello -m "hello"
。我配置mosquitto.conf
,因为我认为主要变化,目前的问题的一个例子,只能通过它来实现。
我该如何解决这样的问题,我想看到发布者的所有错过的消息时,我重新订阅的话题?
您需要使用QOS(服务质量)值的消息。默认情况下,QOS设置为0,基本上是火和忘记,QOS 1是确保交付(但比一次可能意味着交付了)。 2 QOS保证交货只有一次。
这是需要指出的是,QOS是1个客户机和代理之间,所以这可能是出版商和经纪人或经纪人和独立用户之间。 (例如可以在0 QOS发布然后订阅主题在QOS 2)。
消息队列脱机客户端,客户端需要在QOS 1或2 QOS已被认购,当它重新连接,它需要有它的cleanSession标志设置为false
并使用相同的客户端ID。
MQTT经纪人不会为以前从未连接的客户端队列中。
随着mosquitto_sub和mosquitto_pub您可以设置与-q
选项的QoS级别,你可以设置与-i
选项的客户端id。要设置清洁会话标志为false mosquitto_sub你应该使用-c
选项