如何配置Mosquitto保留会话?默认为何丢弃会话?
Mosquitto无法保留MQTT会话问题排查
我使用paho-mqtt(Python客户端)尝试让Mosquitto在客户端重连时保留会话,但每次使用相同用户名、密码、客户端ID连接时,会话都未被保留。
Mosquitto配置
我的配置非常简单:
listener 1883 password_file /mosquitto/config/passwords
除了为该用户创建包含用户名和密码的密码文件外,没有其他额外配置,仅使用Docker镜像默认配置。
已做的排查
我已按照MQTT 5标准对会话进行字节级追踪并核对参数:
- 客户端使用MQTT 5协议连接
- 客户端CONNECT报文包含正确的参数:
- 用户名
- 密码
- 客户端ID
abcde - clean session标志(
0,对应MQTT 5的clean_start=False) - 心跳值(
120)
- 服务器CONNACK报文返回:
- 未分配客户端ID(符合预期)
- Session present值为
0
- 该paho-mqtt连接可正常与其他客户端通过Mosquitto通信
- 尝试过未发送DISCONNECT报文的情况下断开连接
连接代码
以下是我的连接代码:
import paho.mqtt.client as mqtt mqttc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, protocol=mqtt.MQTTv5, client_id="abcdef") mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.username_pw_set("guest", "guest") mqttc.connect("localhost", 1884, clean_start=False, keepalive=120)
我多次使用相同客户端ID连接并创建订阅,但Mosquitto默认不保留会话,是否遗漏了配置项?
内容的提问来源于stack exchange,提问作者Philip Couling
相关产品推荐
相关产品推荐

