MQTT qos参数无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MQTT qos参数无效相关的知识,希望对你有一定的参考价值。
我已经在树莓派服务器上安装了mosquitto服务器。
此服务器工作正常:我已经测试了mosquitto_sub和mosquitto_pub命令。
我已经编写了这个python脚本:
import paho.mqtt.client as mqtt
import time
client = mqtt.Client('module_test_4')
client.connect('127.0.0.1', 1883, 10)
client.loop_start()
for i in range(10):
client.publish('topic_2', "valeur %d" % i, qos=0)
time.sleep(1)
client.loop_stop()
client.disconnect()
我已经在2个控制台上两次启动了此脚本:
mosquitto_sub -h 127.0.0.1 -i module_test_2 -t topic_2
效果很好:我在每个控制台上看到消息。
现在,我尝试将qos参数更改为0,1和2。
我已经尝试运行我的python脚本而不启动mosquitto_sub的任何发生。
我以为mosquitto将缓冲消息并在启动mosquitto_sub时再次发送该消息,但这不起作用。
所以我想知道qos的工作原理...
谢谢
答案
QOS一次仅适用于连接的一个分支。
这意味着发布者/经纪人与经纪人/订户的QOS可能不同。
因此,在您发布的示例中,在发布者和代理之间将QOS设置为2,但在订阅者和代理之间仍将其默认值设置为0。这意味着,就经纪人而言,订阅客户端仅需要QOS 0。
如果要使用mosquitto_sub
进行测试,则还需要在命令行上包含更高的QOS。
mosquitto_sub -h 127.0.0.1 -i module_test_2 -t topic_2 -q 2
以上是关于MQTT qos参数无效的主要内容,如果未能解决你的问题,请参考以下文章