说出来大家可能不相信, 我的MQTT不能做转发操作, 而且只有一个话题不能做, 其他话题可以, 我靠搞雷啊. 但是狗了2天的时间, 终于发现了槽点, 但是本质上还是没有发现问题的本质, 这里我说一下遇到的这个问题, 和解决的方法。好了废话不多少,上代码!!!
本次使用工具版本为:
- JDK: 1.8
- SpringBoot: 2.5.4
- MQTT: 3.1.1
先来一张问题的截图

可以看到这里发布消息后就会爆出服务器响应超时 具体代码不贴了, 有需要的可以去我的博客查询名称MQTT2.0
这里有几点要说
- 在messageArrived中接收消息
- 在messageArrived中解析消息
- 在messageArrived获取客户端信息对消息进行转发
好了。。。。完成这三步,你就可以报错了, 与我上方一致的错误,没发一次都时超时
- 但是在MX中我们的消息是可以接收到的, 这里要归功于MQTT的会话过期储存策略,非常NICE
原因和解决:
- 获取消息后, 不应该和messageArrived的线程中在进行发布
- 开启线程池, 发布消息使用多线程发布
上两张问题点的截图吧
MX日志:

官方解释:

发布代码:

好了, 今天的代码就到这里了, 如果大家对代码感兴趣, 可以关注下的我博客 www.openacloud.cn