You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Paho MqttAsyncClient inflight消息数超100及异步publish阻塞问题排查

问题分析与结论

先排除Broker端问题

你的mosquitto配置中:

  • max_inflight_messages 0 和 max_inflight_bytes 0 在mosquitto中表示不对inflight消息做数量或字节限制,Broker不会因为这两个参数限制消息处理,所以当前inflight异常和publish阻塞大概率不是Broker负载能力导致的。

更可能是客户端(Paho Java MQTT5 Client 1.2.5)的问题

从现象和版本特性来看,主要有几个可能的点:

  • 版本已知缺陷:Paho Java Client 1.2.x的MQTT5实现属于早期版本,存在一些异步发送和ACK处理的bug,比如异步publish时内部队列处理阻塞、PUBACK回调线程死锁或延迟处理的情况,这些都会导致inflight消息无法及时清理,进而阻塞后续publish请求。
  • 客户端inflight管理逻辑:QoS1消息需要等待Broker的PUBACK才能从inflight队列移除,如果客户端的ACK处理线程被阻塞(比如用户自定义的回调逻辑耗时过长、线程池配置不合理),会导致inflight消息堆积;即使是异步publish,当客户端内部的发送队列或inflight队列达到阈值时,也会触发阻塞逻辑。
  • 客户端资源配置:如果客户端的发送线程池、回调线程池的线程数配置过小,高负载下线程被占满,会导致消息发送和ACK处理延迟,进而出现publish阻塞的情况。

建议排查方向

  • 升级Paho Java Client到最新稳定版本(比如1.3.x或更高),新版本修复了大量MQTT5相关的bug,尤其是异步发送和inflight管理的问题。
  • 检查客户端的线程池配置(比如MqttAsyncClient的ExecutorService参数),确保线程数足够处理消息发送和回调逻辑。
  • 排查自定义的消息回调(比如MqttCallback中的方法)是否存在耗时操作,避免阻塞ACK处理线程。

内容的提问来源于stack exchange,提问作者user2071938

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:43:17