我正在使用Mosquitto(現在的Paho)python MQTT客戶端連接到HiveMQ代理。該代碼是非常基本的,因爲從這裏開始他們的資料爲準 - https://pypi.python.org/pypi/paho-mqtt無法使用Mosquitto/Paho for Python收到超過20條MQTT消息
#SUBSCRIBER
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
client.subscribe("GB/node0/", 2)
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print "Topic: ", msg.topic+'\nMessage: '+str(msg.payload)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.15.4", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
client.loop_forever()
正如你在client.subscribe(通知),服務質量是2.這是唯一的修改,以正式文件的代碼。
發佈客戶端的代碼是 -
#PUBLISHER
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqttc.connect("192.168.15.4", 1883, 60)
mqttc.publish("GB/node0/", "Hello, World baby!",2)
這裏也中,QoS是2
由訂戶所接收的QoS的結果中只有20的消息,該修改。進一步探測後,我意識到這個問題可能是由於max_inflight_messages_set()
,這是一個選項功能,它設置了QoS> 0的消息的最大數量,可以一次性通過他們的網絡流量的一部分。默認值爲20.
但是,將其更改爲任何其他值不起作用。另外,爲什麼客戶在收到郵件時覺得這些郵件仍然在飛行中?我如何解決問題?我如何確保客戶瞭解這些消息不是「飛行中」並已交付?
'的max_packets說法已經過時,應保持unset.' https://pypi.python.org/pypi/paho- MQTT/1.3.0#網絡環 – northtree 2017-07-12 07:06:56