MQTT qos参数无效

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

我已经在树莓派服务器上安装了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的工作原理...

谢谢

mqtt mosquitto paho
1个回答
0
投票

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 
© www.soinside.com 2019 - 2024. All rights reserved.