From d71e3a495a125811889fdf7c2a2ec0650e28262d Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 25 十二月 2025 17:41:21 +0800
Subject: [PATCH] 最新版本541200007最新版本541200007
---
server/visits/device_service/src/main/java/com/doumee/mqtt/config/MqttClientInit.java | 136 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 136 insertions(+), 0 deletions(-)
diff --git a/server/visits/device_service/src/main/java/com/doumee/mqtt/config/MqttClientInit.java b/server/visits/device_service/src/main/java/com/doumee/mqtt/config/MqttClientInit.java
new file mode 100644
index 0000000..745ed38
--- /dev/null
+++ b/server/visits/device_service/src/main/java/com/doumee/mqtt/config/MqttClientInit.java
@@ -0,0 +1,136 @@
+package com.doumee.mqtt.config;
+
+import org.eclipse.paho.client.mqttv3.*;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+public class MqttClientInit {
+ static MqttClient client;
+ static MqttClient subClient;
+ public static synchronized MqttClient getPublishInstance(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() +config.getVersion();
+ client = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), clientId,new MemoryPersistence());
+ // MQTT鐨勮繛鎺ヨ缃�
+ MqttConnectOptions options = new MqttConnectOptions();
+ // 璁剧疆鏄惁娓呯┖session,杩欓噷濡傛灉璁剧疆涓篺alse琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛岃缃负true琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴
+ options.setCleanSession(false);
+ // 璁剧疆杩炴帴鐨勭敤鎴峰悕
+ options.setUserName(config.getUsername());
+ // 璁剧疆杩炴帴鐨勫瘑鐮�
+ options.setPassword(config.getPassword().toCharArray());
+ // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹
+ options.setConnectionTimeout(10);
+ // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧1.5*20绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒�
+ options.setKeepAliveInterval(20);
+ //璁剧疆鏂紑鍚庨噸鏂拌繛鎺�
+ options.setAutomaticReconnect(true);
+ MqttTopic topic = client.getTopic(clientId+"_close");
+ //閬楀槺
+ options.setWill(topic, "close".getBytes(), 1, true);
+ client.connect(options);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return client;
+ }
+ public static synchronized MqttClient getSubInstance(MqttConfig config, MqttCallback callBack){
+ if(subClient !=null){
+ refreshClient();
+ return subClient;
+ }
+ try {
+ // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
+ String clientId =config.getSubclientid() +config.getVersion();
+ subClient = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), clientId,new MemoryPersistence());
+ // MQTT鐨勮繛鎺ヨ缃�
+ MqttConnectOptions options = new MqttConnectOptions();
+ // 璁剧疆鏄惁娓呯┖session,杩欓噷濡傛灉璁剧疆涓篺alse琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛岃缃负true琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴
+ options.setCleanSession(false);
+ // 璁剧疆杩炴帴鐨勭敤鎴峰悕
+ options.setUserName(config.getUsername());
+ // 璁剧疆杩炴帴鐨勫瘑鐮�
+ options.setPassword(config.getPassword().toCharArray());
+ // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹
+ options.setConnectionTimeout(10);
+ // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧1.5*20绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒�
+ options.setKeepAliveInterval(20);
+ // 璁剧疆鍥炶皟
+ subClient.setCallback(callBack);
+ //璁剧疆鏂紑鍚庨噸鏂拌繛鎺�
+ options.setAutomaticReconnect(true);
+ MqttTopic topic = subClient.getTopic(clientId+"_close");
+ //閬楀槺
+ options.setWill(topic, "close".getBytes(), 1, true);
+ subClient.connect(options);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return subClient;
+ }
+ public static synchronized MqttClient getInstance(MqttClient clientModel,MqttConfig config, MqttCallback callBack){
+ if(clientModel !=null){
+ refreshClient(clientModel);
+ return clientModel;
+ }
+ try {
+ // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
+ String clientId =config.getClientid() +config.getVersion();
+ clientModel = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), clientId,new MemoryPersistence());
+ // MQTT鐨勮繛鎺ヨ缃�
+ MqttConnectOptions options = new MqttConnectOptions();
+ // 璁剧疆鏄惁娓呯┖session,杩欓噷濡傛灉璁剧疆涓篺alse琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛岃缃负true琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴
+ options.setCleanSession(false);
+ // 璁剧疆杩炴帴鐨勭敤鎴峰悕
+ options.setUserName(config.getUsername());
+ // 璁剧疆杩炴帴鐨勫瘑鐮�
+ options.setPassword(config.getPassword().toCharArray());
+ // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹
+ options.setConnectionTimeout(10);
+ // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧1.5*20绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒�
+ options.setKeepAliveInterval(20);
+ // 璁剧疆鍥炶皟
+ clientModel.setCallback(callBack);
+ //璁剧疆鏂紑鍚庨噸鏂拌繛鎺�
+ options.setAutomaticReconnect(true);
+ MqttTopic topic = clientModel.getTopic(clientId+"_close");
+ //閬楀槺
+ options.setWill(topic, "close".getBytes(), 1, true);
+ clientModel.connect(options);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return clientModel;
+ }
+
+
+ public static synchronized void refreshClient( ) {
+ try {
+ if(subClient !=null && !subClient.isConnected()){
+ subClient.reconnect();
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ public static synchronized void refreshClient(MqttClient clientModel ) {
+ try {
+ if(clientModel !=null && !clientModel.isConnected()){
+ clientModel.reconnect();
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+}
--
Gitblit v1.9.3