MQTT qos参数没有作用
MQTT qos parameter has no effect
我在树莓派服务器上安装了 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 一次仅适用于连接的一个分支。
这意味着 publisher/broker 和 broker/subscriber 之间的 QOS 可能不同。
因此,在您发布的示例中,您将发布者和代理之间的 QOS 设置为 2,但它仍然是订阅者和代理之间的默认值 0。这意味着就代理而言,订阅客户端只需要 QOS 0。
如果您想使用 mosquitto_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
我在树莓派服务器上安装了 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 一次仅适用于连接的一个分支。
这意味着 publisher/broker 和 broker/subscriber 之间的 QOS 可能不同。
因此,在您发布的示例中,您将发布者和代理之间的 QOS 设置为 2,但它仍然是订阅者和代理之间的默认值 0。这意味着就代理而言,订阅客户端只需要 QOS 0。
如果您想使用 mosquitto_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