From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 97 insertions(+), 0 deletions(-) diff --git a/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java b/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java new file mode 100644 index 0000000..1c3c548 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java @@ -0,0 +1,97 @@ +package com.ruoyi.device.mqtt; + +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +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.persist.MemoryPersistence; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class MQClient { + + private static MqttClient client; + public static MqttClient getClient() { + return client; + } + public static void setClient(MqttClient client) { + MQClient.client = client; + } + + /** + * WEB鏈嶅姟鍣ㄨ繛鎺QTT鏈嶅姟鍣ㄧ殑閰嶇疆 + * @param userName 璐﹀彿 + * @param password 瀵嗙爜 + * @param outTime 瓒呮椂鏃堕棿 + * @param KeepAlive 蹇冭烦妫�娴嬫椂闂� + * @return + */ + private MqttConnectOptions getOption(String userName, String password, int outTime, int KeepAlive) { + MqttConnectOptions option = new MqttConnectOptions(); + // 璁剧疆鏄惁娓呯┖session,false琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛宼rue琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴 + option.setCleanSession(true); + // 璁剧疆杩炴帴鐨勭敤鎴峰悕 + option.setUserName(userName); + // 璁剧疆杩炴帴鐨勫瘑鐮� + option.setPassword(password.toCharArray()); + // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹 + option.setConnectionTimeout(outTime); + // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧(1.5*keepTime)绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒� + option.setKeepAliveInterval(KeepAlive); + // setWill鏂规硶锛屽鏋滈」鐩腑闇�瑕佺煡閬撳鎴风鏄惁鎺夌嚎鍙互璋冪敤璇ユ柟娉曘�傝缃渶缁堢鍙g殑閫氱煡娑堟伅 + // option.setWill(topic, "close".getBytes(), 2, true); + //璁剧疆鏈�澶ч�熷害 + option.setMaxInflight(1000); + log.info("================>>>MQTT杩炴帴璁よ瘉鎴愬姛<<======================"); + return option; + } + + /** + * WEB鏈嶅姟鍣ㄨ繛鎺QTT鏈嶅姟鍣ㄥ嚱鏁� + * @param mqttConfig yml涓璏QTT鐨勯厤缃� + */ + public void connect(MQConfig mqttConfig) throws MqttException { + client = new MqttClient(mqttConfig.getUrl(), mqttConfig.getClientId(), new MemoryPersistence()); + MqttConnectOptions options = getOption(mqttConfig.getUsername(), mqttConfig.getPassword(), + mqttConfig.getTimeout(), mqttConfig.getKeepAlive()); + MQClient.setClient(client); + //杩炴帴澶辫触璋冪敤鍥炶皟鍑芥暟锛岄噸鏂拌繛鎺� + client.setCallback(new MQCallback<Object>(this, mqttConfig)); + if (!client.isConnected()) { + client.connect(options); + // 璁㈤槄涓婚 + MQSubscribe.subscribe_0(mqttConfig.getSubscribe()); + log.info("================>>>MQTT杩炴帴鎴愬姛<<======================"); + } else {// 杩欓噷鐨勯�昏緫鏄鏋滆繛鎺ヤ笉鎴愬姛灏遍噸鏂拌繛鎺� + client.disconnect(); + client.connect(options); + } + } + + /** + * WEB鏈嶅姟鍣ㄤ笌MQTT鏈嶅姟鍣ㄧ殑鏂嚎閲嶈繛 + * @throws Exception + */ + public Boolean reConnect() throws Exception { + Boolean isConnected = false; + if (null != client) { + client.connect(); + if (client.isConnected()) { + isConnected = true; + } + } + return isConnected; + } + + /** + * 寮傚父鍏抽棴鏈嶅姟锛學EB鏈嶅姟鍣ㄤ笌MQTT鏈嶅姟鍣ㄧ殑鏂紑杩炴帴鍑芥暟 + */ + @SneakyThrows + public void close(){ + client.close(); + client.disconnect(); + log.info("================>>寮傚父鍏抽棴涓巑qtt鏈嶅姟鍣ㄧ殑杩炴帴<<======================"); + } +} -- Gitblit v1.9.3