相同的TOPIC,消息来源也是相同的,为啥有一类消息收不到

Qos = 0,设备A通过MQTT发送了2类消息,设备B在一段时间出现只能收到一类消息。

这是EMQX的log
//1类消息
2025-05-22T06:39:00.460056+00:00 [debug] tag: MQTT, clientid: PAD-e9fdedfbcb66d1c3e9fdedfbcb66d1c3, msg: mqtt_packet_sent, peername: 192.168.1.241:46560,packet: PUBLISH(Q0, R0, D0, Topic=station/upper/RR01, PacketId=undefined, Payload(text)={“event”:“EV_ERROR_REPORT”,“msg_id”:“4de6b69e-a308-46ab-855e-adb614da7c33”,“des”:“错误上报”,“dev_id”:“RR01-7cb713c37e9847ff89b6ed2fcb3804f4”,“version”:“refuel-1.1.9-20250423-5”,“timestamp”:“2025-05-22 14:39:00.481”,“args”:{“notify_data”:{“level”:0,“title”:“null”,“sub_title”:“null”,“task_id”:1,“time”:“14:39:00.481”,“code”:1011,“subcode”:0,“msg”:“下载车型数据到本地成功”,“detail”:“model:HongQi_ShengShi_2009”,“tip”:“”}}})

//2类消息
2025-05-22T06:39:01.168968+00:00 [debug] tag: MQTT, clientid: PAD-e9fdedfbcb66d1c3e9fdedfbcb66d1c3, msg: mqtt_packet_sent, peername: 192.168.1.241:46560,packet: PUBLISH(Q0, R0, D0, Topic=station/upper/RR01, PacketId=undefined, Payload(text)={“event”:“EV_BR_DEVICE_STATUS”,“msg_id”:“0045d921-0372-4142-a5a3-8566d32f0c43”,“des”:"广播upper心…(2945 bytes))

当时A设备这2类消息都发送了很多,基本上每秒1~3次,Topic都是相同的,但是,概率的,有段时间,在设备B上的log,我们确定了1类消息能收到,2类收不到,2类消息的消息比较长(2945 bytes),不知道和这个有没有关系?

看看,dashbord的drop指标增加了没,如果是增加了,看原因是不是太大了,如果是就讥调一下emqx dashboard 上mqtt那的最大包大小,调大点。
如是指标上没丢就查查日志,大概率这时emqx的日志显示发过去了,确定有这日志就可以排查设备的代码了。

EMQX的这个log,是表示已经给client发送了吗?
[debug] tag: MQTT, clientid: PAD-e9fdedfbcb66d1c3e9fdedfbcb66d1c3, msg: mqtt_packet_sent,…
最大包大小,应该没关系吧,因为大部分时间,可以正常接受的,就会过几天会出现一段时间收不到。

image
我看文档说最大包,默认是1024k,我们的包最大也就3k

对了,不同大小的包,服务端会有不同的处理逻辑吗?

不会

帮确认下这个log的意义