Spring MVC配置MQTT后无法接收入站消息 控制台无打印输出
Spring MQTT 消息接收失败排查方案
- 1 修正命令行发布参数
你当前使用的mosquitto_pub命令未携带认证信息,你的Spring配置中指定了MQTT连接用户名admin、密码123456,若Mosquitto服务开启了认证校验,未携带认证参数的发布请求会被服务端直接拦截,使用以下命令发布测试消息:
mosquitto_pub -u admin -P 123456 -t myTopic -m "测试消息内容"
- 2 校验Mosquitto服务运行状态
执行以下命令确认1883端口正常监听:
netstat -ano | findstr 1883
如果无对应监听记录,可通过Windows服务管理器启动Mosquitto服务,或执行mosquitto -v前台启动服务,可直接查看服务运行日志排查请求异常。
- 3 校验Spring端连接状态
查看Spring应用启动日志,搜索MQTT、connection相关关键词,确认是否存在连接失败、认证失败的报错。如果出现连接拒绝,优先核对MQTT服务地址、端口、认证信息是否和配置一致。 - 4 避免客户端ID冲突
你当前配置的消费者客户端ID为固定值serverIn,若有其他客户端使用相同ID连接同一MQTT服务,会导致Spring端客户端被强制下线无法接收消息,可修改为动态生成的客户端ID:
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter("serverIn_" + System.currentTimeMillis(), mqttClientFactory(), "#");
- 5 消息链路验证
使用第三方MQTT客户端工具,使用和Spring配置完全一致的连接参数连接Mosquitto服务,订阅#主题后再执行发布命令,确认消息可以正常被订阅,排除服务端本身的消息流转异常。
内容的提问来源于stack exchange,提问作者Rajnish
相关产品推荐
相关产品推荐

