具有AWS IoT核心的MQTT在QoS为2时不发送消息

2024-05-15 06:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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


Tags: 消息客户端homemodelmqttpublish发布者print

热门问题