From b531004a3cbd33d7bb9f5b7dce06ddd4f5e7ec9a Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 18 十一月 2022 11:57:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/xm-20221107' into xm-20221107

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/util/MqttClientUtil.java |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/util/MqttClientUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/util/MqttClientUtil.java
new file mode 100644
index 0000000..5b9a528
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/util/MqttClientUtil.java
@@ -0,0 +1,92 @@
+package com.sandu.ximon.admin.localMQTT.util;
+
+import com.alibaba.fastjson.JSON;
+import com.sandu.ximon.admin.localMQTT.client.MqttClientManager;
+import com.sandu.ximon.admin.localMQTT.model.LocalMqttMsg;
+import com.sandu.ximon.admin.utils.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static java.lang.Thread.sleep;
+
+/**
+ * @author van
+ * @version 1.0
+ * msg锛歁QTT瀹㈡埛绔伐鍏风被
+ * @date 2022/11/9 16:32
+ */
+@Slf4j
+public class MqttClientUtil {
+
+    private static MqttClientUtil mqttClientUtil = new MqttClientUtil();
+
+    public static MqttClientUtil getInstance() {
+        return mqttClientUtil;
+    }
+
+    public static String publishPrefix = "v1/devices/request/";
+
+
+    public static String clientId = "java_server_msg";
+
+    public static final Map<String, String> MQTT_RETURN_FRAME_MAP = new ConcurrentHashMap<>();
+
+    public static String sendMqttMsg(String topic, String content) {
+        try {
+            LocalMqttMsg localMqttMsg = new LocalMqttMsg();
+            localMqttMsg.setPayload(content);
+
+            MqttMessage message = new MqttMessage(JSON.toJSONString(localMqttMsg).getBytes());
+
+             message.setQos(0);
+            MqttClient mqttClient = MqttClientManager.getInstance().getMqttClientById(clientId);
+
+            if (null == mqttClient) {
+                log.error("Not exist mqttClient where it's clientId is {}", clientId);
+                return topic;
+            }
+
+            long start = System.currentTimeMillis();
+            mqttClient.publish(publishPrefix+topic, message);
+            log.info("{}",publishPrefix+topic);
+            log.info("{}", message);
+
+            /**
+             * 瀹炵幇浼悓姝�
+             * */
+            try {
+                String returnFrame = null ;
+                returnFrame = MQTT_RETURN_FRAME_MAP.get(topic);
+
+                for (int i = 0;i < 50;i++){
+                    if (StringUtil.strIsNullOrEmpty(returnFrame)){
+                        sleep(100);
+                        returnFrame = MQTT_RETURN_FRAME_MAP.get(topic);
+                    }else {
+                        log.info("杩斿洖鏃堕棿锛歿} ms",System.currentTimeMillis() - start) ;
+                        String remove = MQTT_RETURN_FRAME_MAP.remove(topic);
+                        log.info("remove缁撴灉锛歿} ",remove);
+                        return returnFrame;
+                    }
+                }
+
+
+            } catch (InterruptedException e) {
+
+            }
+
+        } catch (MqttException e) {
+            log.error("MqttClient send msg faild!", e);
+            return("閫氫俊瓒呮椂");
+        }
+        return null;
+    }
+
+
+
+}

--
Gitblit v1.9.3