一、业务场景
我们在使用MQTT的时候,在设置客户端参数的时候设置的自动重连属性,但是断开重连后无法订阅断开之前订阅的消息。
二、异常处理
在设置MQTT客户端参数配置的时候记得设置不要清除Session即可
/**
* MQTT连接参数设置
*/
private MqttConnectOptions mqttConnectOptions(String userName, String passWord) throws MqttException {
mqttClient = new MqttClient(HOST, clientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
options.setConnectionTimeout(10);///默认:30
options.setAutomaticReconnect(true);//默认:false
options.setCleanSession(false);//默认:true
//options.setKeepAliveInterval(20);//默认:60
return options;
}
设置AutomaticReconnect(true)和CleanSession(false),这样MQTT客户端在断开重连后还能继续收到之前的消息