我正在尝试使用MQTT将消息从一个客户端发送到另一个客户端,两者都是发布者和订阅者。当QoS=1时,将发送消息,但有时会复制消息。但是,当我使用QoS=2时,消息显然不会被发送。每个客户机每轮发送4条消息,有效负载是最大字节数组的一块
发布者代码:
def publish_model(model):
SliceLength, FinalSlice, ByteArray, ArrayLength,SlicesNumber = get_lengths(model)
mqttc.publish("home/AWS1", ByteArray[ArrayLength - FinalSlice:ArrayLength], qos=2)
sleep(0.2)
for i in range(SlicesNumber-1,0,-1):
if i != 1:
print(SliceLength*(i-1)-SliceLength*i)
mqttc.publish("home/AWS1", ByteArray[SliceLength*(i-1):SliceLength*i], qos=2)
mqttc.loop()
print("model sent: home/AWS1")
else: ###The final chunk
mqttc.publish("home/AWS2", ByteArray[SliceLength*(i-1):SliceLength*i], qos=2)
mqttc.loop()
print("model sent: home/AWS2")
sleep(0.2)
用户代码:
mqttc.subscribe("home/AWS1", 2)
mqttc.subscribe("home/AWS2", 2)
while 1 == 1:
if connflag == True:
p = 1 ##line that does nothing only waits
else:
print("waiting for connection...")
我想强调的是,两者都是订户和出版商
发布者在发送消息时只保留:MQTT sending
这里的问题是AWS物联网核心只允许QoS 0和1。因此,如果消息的QoS为2,则不会发送消息
相关问题 更多 >
编程相关推荐