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,设置重连,这个时候就不报错了

 

 

 

 



 

posted @   每天进步一点点_hejj  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示