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 @ 2025-01-03 18:22  每天进步一点点_hejj  阅读(103)  评论(0)    收藏  举报