首页 > 解决方案 > 如何配置 paho mqtt 订阅以高速获取数据,例如每秒 1000 条消息

问题描述

我正在使用 python paho mqtt 客户端订阅 MQTT 代理以获取数据,并且我正在使用pubsubclient.h通过 ESP32 发布数据。

数据频率为每秒 1000 条消息。为了测试,我发布了 100000 条消息,并使用 python paho mqtt 订阅和收集数据。我测试了几次,但我从 100000 条消息中得到了 22000-30000 条消息。

这是我用来订阅经纪人的代码:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to broker")
        client.subscribe("pub_test",2) 
    else:
        print("Connection failed")

def on_message(client, userdata, message):
    print (message.payload)
    
def updateMqtt():
    client = mqtt.Client(client_id="Sathish", clean_session=False, userdata=None, transport="tcp")
    #client = mqtt.Client()
    client.on_connect= on_connect
    print("after on connect")#attach function to callback
    client.on_message= on_message
    print("after on message")#attach function to callback    
    client.connect("192.168.3.101", port=1883)
    client.loop_forever()
   # client.loop_start()
    
updateMqtt() 

标签: pythonmqtt

解决方案


由于您在 QOS2 上订阅,因此您不会丢失代理和此代码之间的消息,因为 PubSubClient 仅支持 QOS0,因此丢失的可能性更大的是 ESP32 和代理之间


推荐阅读