MQTT qos参数无效

MQTT qos参数无效,mqtt,mosquitto,paho,Mqtt,Mosquitto,Paho,我已经在raspberry服务器上安装了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

我已经在raspberry服务器上安装了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脚本,但没有启动任何Mosquito_sub事件

我想mosquitto将缓冲消息,并在mosquitto_sub启动时再次发送,但这不起作用

所以我想知道qos是如何工作的


谢谢

QOS一次只适用于连接的一个分支

这意味着发布者/代理和代理/订户之间的QOS可能不同

因此,在您发布的示例中,您将发布者和代理之间的QOS设置为2,但订阅者和代理之间的QOS仍然是默认的0。这意味着,就代理而言,订阅客户端只需要QOS 0

如果要使用
mosquitto\u sub
进行测试,还需要在命令行中包含更高的QOS。在断开连接之前,您需要在QOS 2上建立订阅,如下所示:

mosquitto_sub -h 127.0.0.1 -i module_test_2 -t topic_2 -q 2
您还需要告诉mosquitto_sub在重新连接时不要请求清洁会话:

 mosquitto_sub -h 127.0.0.1 -i module_test_2 -t topic_2 -q 2 -c