一、具体表现
mqtt 服务运行一段时间之后,发送指令后 mqtt 客户端订阅者没有收到消息,或者说是回调函数没有反应。
二、问题原因
多线程导致,具体原因请自行查看 MqttConnectOptions 中的参数 maxInflight 相关代码。
三、解决方案
更换(升级) mqtt 依赖版本(版本大于等于 1.2.5 即可)
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
<scope>compile</scope>
</dependency>
本人使用的是spring整合的依赖版本(该版本大于等于5.4.2即可)
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>5.5.14</version>
</dependency>