mqtt应用问题
emqx部署:
docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:4.4.4
admin/public
可视化工具
docker pull emqx/mqttx-web
docker run -d --name mqttx-web -p 80:80 emqx/mqttx-web
emqx在线地址:http://127.0.0.1:18083/#/
1、mqtt程序主动断开后,无法再次收到消息
解决办法:
方法一、在emqx服务端中主动踢除客户端
方法二、代码里
面将session设置为true,每次断开会清除会话
2、正在进行过多的发布(32202)
解决办法:
方法一、默认支持一次新发送10条消息,最大是1000,可以设置
//options.setMaxInflight(1000);
方法二、不确定是否起作用
原始写法
更改后写法
3、连接服务器超时
说明:有一个生产者在向topicA发送数据,如果消费者第一次启动程序,订阅了一个topicA,此次能正常消费,但是第二次启动,就报连接服务器超时,表现出来是同一个主题不能被同一个客户端订阅两次,但是做了测试后,第一次启动的时候就订阅两次,就可以启动成功)
原始代码:
解决方法:
方法一、设置重连机制
options.setAutomaticReconnect(true);
但是遇到新的问题,如果在emqx上主动踢除后,无法在接收消息。
方法二、更改代码
ConsumerMessageCallbackHandler implements MqttCallback,设置重连,这个时候就不报错了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具