espressif / esp-mqtt

ESP32 mqtt component
Apache License 2.0
603 stars 255 forks source link

esp_mqtt_client_publish 中 消息过早放入链表排队 (IDFGH-1881) #131

Closed MGDG closed 5 years ago

MGDG commented 5 years ago

在使用gprs作为传输层的时候,消息先入队再调用mqtt_write_data发送可能导致同一条消息被重复发送几次。 原因:gprs速度太慢,调用mqtt_write_data发送数据耗时在1秒左右,因为消息被提前放入链表了,这种情况下esp_mqtt_task任务中也会对non-transmitted的消息进行重发。导致一条消息被重复发送多次。 建议:调用mqtt_write_data返回后才将消息放入链表等待重发