在使用paho.mqtt.client库连接thingsboard平台的设备时,单个客户端连接订阅设备的属性,没有任何问题,现考虑同时多个客户端进行订阅操作,启动两个python窗口,代码如下,进行连接,控制端就一直不停地显示Connected with result code Success,对于其Qos的等级问题也进行了区别,client_id也进行了不同的设置,还是不清楚问题出在哪,是Thingsboard平台的问题还是客户端代码的问题
def on_connect(client, userdata, flags, reason_code, properties):
print('Connected with result code ' + str(reason_code))
# 订阅设备的属性主题
client.subscribe('v1/devices/me/attributes',qos=0)
# 消息接收回调
def on_message(client, userdata, msg):
print('Topic: ' + msg.topic + '\nMessage: ' + str(msg.payload))
def on_subscribe(client, userdata, mid, reason_code_list, properties):
# Since we subscribed only for a single channel, reason_code_list contains
# a single entry
if reason_code_list[0].is_failure:
print(f"Broker rejected you subscription: {reason_code_list[0]}")
else:
print(f"Broker granted the following QoS: {reason_code_list[0].value}")
# 创建 MQTT 客户端实例
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,client_id="client2")
# 设置连接回调
client.on_connect = on_connect
# 设置消息接收回调
client.on_message = on_message
#订阅信息QoS的等级
client.on_subscribe=on_subscribe
# 使用设备访问令牌进行身份验证
client.username_pw_set(ACCESS_TOKEN)
# 连接到 ThingsBoard MQTT 服务器
client.connect(THINGSBOARD_HOST, MQTT_PORT,60)
# 阻塞调用,客户端将自动处理重连操作
client.loop_forever()