用新的用户连接从发布者的错过的消息的显示(MQTT / Mosquitto)

问题描述 投票:0回答:1

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,因为我认为主要变化,目前的问题的一个例子,只能通过它来实现。

我该如何解决这样的问题,我想看到发布者的所有错过的消息时,我重新订阅的话题?

mqtt iot mosquitto
1个回答
1
投票

您需要使用QOS(服务质量)值的消息。默认情况下,QOS设置为0,基本上是火和忘记,QOS 1是确保交付(但比一次可能意味着交付了)。 2 QOS保证交货只有一次。

这是需要指出的是,QOS是1个客户机和代理之间,所以这可能是出版商和经纪人或经纪人和独立用户之间。 (例如可以在0 QOS发布然后订阅主题在QOS 2)。

消息队列脱机客户端,客户端需要在QOS 1或2 QOS已被认购,当它重新连接,它需要有它的cleanSession标志设置为false并使用相同的客户端ID。

MQTT经纪人不会为以前从未连接的客户端队列中。

随着mosquitto_submosquitto_pub您可以设置与-q选项的QoS级别,你可以设置与-i选项的客户端id。要设置清洁会话标志为false mosquitto_sub你应该使用-c选项

© www.soinside.com 2019 - 2024. All rights reserved.