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();
|
}
|
}
|
}
|