Browse Source

二期 mqtt bug

suntianwu 3 years ago
parent
commit
6f8996432a

+ 2 - 0
src/main/java/com/care/mqtt/service/MqttConnectorInstallPoolService.java

@@ -51,6 +51,8 @@ public class MqttConnectorInstallPoolService {
         configParams.put("MQTT_CLIENTID", cliendIdInstall);
         configParams.put("MQTT_USERNAME", username);
         configParams.put("MQTT_PASSWORD", password);
+        configParams.put("CLEAN_SESSION", "true");
+
         try {
             xbMqttDataConnector.createIotDataSource(configParams);
             MqttMessageListener mqttMessageListener = new MqttMessageListener();

+ 1 - 0
src/main/java/com/care/mqtt/service/MqttConnectorPoolService.java

@@ -62,6 +62,7 @@ public class MqttConnectorPoolService {
         configParams.put("MQTT_CLIENTID", cliendId);
         configParams.put("MQTT_USERNAME", username);
         configParams.put("MQTT_PASSWORD", password);
+        configParams.put("CLEAN_SESSION", "false");
         try {
             xbMqttDataConnector.createIotDataSource(configParams);
             MqttMessageListener mqttMessageListener = new MqttMessageListener();

+ 3 - 1
src/main/java/com/care/mqtt/tool/MqttDataConnector.java

@@ -35,6 +35,7 @@ public class MqttDataConnector {
         //ssl  验证时是双向验证还是单向验证
         String sslType = configParams.get("MQTT_SSLTYPE");
 
+        String cleanSession = configParams.get("CLEAN_SESSION");
 
         //缓存两种模式 存在内存 文件  设置成null 缓存在内存中 最多缓存65535条信息
         //ScheduledExecutorService 可以设置线程池大小 默认10;发布消息方法是异步的
@@ -42,7 +43,7 @@ public class MqttDataConnector {
         mqttConnectOptions = new MqttConnectOptions();
         // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,
         // 这里设置为true表示每次连接到服务器都以新的身份连接
-        mqttConnectOptions.setCleanSession(false);
+        mqttConnectOptions.setCleanSession(Boolean.parseBoolean(cleanSession));
         // mqttConnectOptions.sto
         // 设置超时时间 s
         mqttConnectOptions.setConnectionTimeout(30);
@@ -189,6 +190,7 @@ public class MqttDataConnector {
         configParams.put("MQTT_CLIENTID","pinan05");
         configParams.put("MQTT_USERNAME","test");
         configParams.put("MQTT_PASSWORD","public");
+        configParams.put("CLEAN_SESSION", "false");
 //        configParams.put("MQTT_SSLTYPE","two");
 //
 //        configParams.put("MQTT_SSLROOT_CRTPATH","./root.crt");