From 4fabfe4dbd2eb28d07a4350597d314958cc1c281 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 09 十月 2025 11:16:43 +0800
Subject: [PATCH] 优化

---
 server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java |   40 +++++++++++++++++++++++++++++++---------
 1 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java b/server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java
index 8fe3750..43e47d2 100644
--- a/server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java
+++ b/server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java
@@ -1,25 +1,36 @@
 package com.doumee.core.mqtt.config;
 
+import com.doumee.config.SpringContextUtil;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.mqtt.service.MqttPushCallback;
+import com.doumee.core.mqtt.service.MqttSubService;
+import com.doumee.core.mqtt.service.MqttToolService;
 import org.eclipse.paho.client.mqttv3.MqttClient;
 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
 import org.eclipse.paho.client.mqttv3.MqttException;
 import org.eclipse.paho.client.mqttv3.MqttTopic;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class MqttClientInit {
         static MqttClient client;
         static MqttClient subClient;
-
+        public static boolean isNeedReSub =false ;
         public static synchronized MqttClient getInstance(MqttConfig config ){
             if(client !=null){
+                if(!client.isConnected()){
+                    try {
+                        client.reconnect();
+                    } catch (MqttException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
                 return  client;
             }
+
             try {
                 // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
-//                String clientId =config.getClientid()+ Constants.getUUID();
-                String clientId =config.getClientid()+(int)(Math.random()*10000);
+                String clientId =config.getClientid() +config.getVersion();
                 client = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), clientId,new MemoryPersistence());
                 // MQTT鐨勮繛鎺ヨ缃�
                 MqttConnectOptions   options = new MqttConnectOptions();
@@ -46,12 +57,12 @@
         }
         public static synchronized MqttClient getSubInstance(MqttConfig config,MqttPushCallback callBack){
             if(subClient !=null){
+                refreshClient();
                 return  subClient;
             }
             try {
                 // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
-//                String clientId =config.getClientid()+ Constants.getUUID();
-                String clientId =config.getClientid()+(int)(Math.random()*10000);
+                String clientId =config.getSubclientid() +config.getVersion();
                 subClient = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), clientId,new MemoryPersistence());
                 // MQTT鐨勮繛鎺ヨ缃�
                 MqttConnectOptions   options = new MqttConnectOptions();
@@ -80,11 +91,22 @@
         }
 
 
+        public static synchronized void isSubClientValid()   {
+            if(isNeedReSub){
+                MqttSubService service = SpringContextUtil.getBean(MqttSubService.class);
+                if(service!=null){
+                    service.startSubcribe();
+                }
+            }
+        }
 
-        public static synchronized void refreshClient() throws MqttException {
-            if(client !=null){
-                boolean result = client.isConnected();
-                   client.reconnect();
+        public static synchronized void refreshClient() {
+            try {
+                if(subClient !=null &&  !subClient.isConnected()){
+                    subClient.reconnect();
+                }
+            }catch (Exception e){
+                e.printStackTrace();
             }
         }
 

--
Gitblit v1.9.3