mqtt应用问题
1、mqtt程序主动断开后,无法再次收到消息
解决办法:
方法一、在emqx服务端中主动踢除客户端
方法二、代码里
面将session设置为true,每次断开会清除会话
2、正在进行过多的发布(32202)
解决办法:
方法一、默认支持一次新发送10条消息,最大是1000,可以设置
//options.setMaxInflight(1000);
方法二、不确定是否起作用
原始写法
更改后写法
3、连接服务器超时
说明:有一个生产者在向topicA发送数据,如果消费者第一次启动程序,订阅了一个topicA,此次能正常消费,但是第二次启动,就报连接服务器超时,表现出来是同一个主题不能被同一个客户端订阅两次,但是做了测试后,第一次启动的时候就订阅两次,就可以启动成功)
原始代码:
解决方法:
方法一、设置重连机制
options.setAutomaticReconnect(true);
但是遇到新的问题,如果在emqx上主动踢除后,无法在接收消息。
方法二、更改代码
ConsumerMessageCallbackHandler implements MqttCallback,设置重连,这个时候就不报错了