New file |
| | |
| | | package com.dy.pipIrrApp.workOrder.mqtt; |
| | | |
| | | 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; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-11-16 11:27 |
| | | * @LastEditTime 2024-11-16 11:27 |
| | | * @Description MQTT客户端连接池,对外提供一个初始化的MQTT客户端 |
| | | */ |
| | | |
| | | @Slf4j |
| | | public class MqttClientConnectorPool { |
| | | public static MqttClient mqttClient; |
| | | |
| | | /** |
| | | * 连接MQTT客户端 |
| | | * @return 获取MQTT连队对象 |
| | | */ |
| | | public static MqttClient connectMQTT(String broker, String username, String password) { |
| | | if (mqttClient != null){ |
| | | log.info("已存在!"); |
| | | return mqttClient; |
| | | } |
| | | |
| | | try { |
| | | String clientId = System.currentTimeMillis() + ""; |
| | | |
| | | //创建MQTT客户端(指定broker、客户端id、消息持久策略) |
| | | mqttClient = new MqttClient(broker, clientId, new MemoryPersistence()); |
| | | |
| | | //创建连接参数配置 |
| | | MqttConnectOptions options = new MqttConnectOptions(); |
| | | options.setUserName(username); |
| | | options.setPassword(password.toCharArray()); |
| | | //是否清除会话 |
| | | options.setCleanSession(true); |
| | | //连接超时时间 |
| | | options.setKeepAliveInterval(20); |
| | | //是否自动重连 |
| | | options.setAutomaticReconnect(true); |
| | | mqttClient.connect(options); |
| | | log.info("MqttClient 服务启动broker初始化!"); |
| | | } catch (MqttException e){ |
| | | log.error("MqttClient connect Error:{}", e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | return mqttClient; |
| | | } |
| | | |
| | | /** |
| | | * 关闭MQTT客户端 |
| | | * @param client client |
| | | */ |
| | | public static void closeClient(MqttClient client){ |
| | | try { |
| | | // 断开连接 |
| | | client.disconnect(); |
| | | // 关闭客户端 |
| | | client.close(); |
| | | } catch (MqttException e){ |
| | | log.error("MqttClient disconnect or close Error:{}", e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 关闭MQTT客户端 |
| | | */ |
| | | public static void closeStaticClient(){ |
| | | try { |
| | | if (mqttClient != null){ |
| | | // 断开连接 |
| | | mqttClient.disconnect(); |
| | | // 关闭客户端 |
| | | mqttClient.close(); |
| | | } |
| | | } catch (MqttException e){ |
| | | log.error("MqttClient disconnect or close Error:{}", e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |