关闭旧实例
parent
bc24edef61
commit
dee84cfe54
|
|
@ -218,11 +218,17 @@ public class MqttConfig {
|
|||
// 新增:应用关闭时优雅断开MQTT连接,避免连接泄漏(JDK 8兼容)
|
||||
@PreDestroy
|
||||
public void destroyMqttClient() {
|
||||
if (mqttClientInstance != null && mqttClientInstance.isConnected()) {
|
||||
// 最小改动:补充判空+close+置空,保留原有逻辑和注释
|
||||
if (mqttClientInstance != null) {
|
||||
try {
|
||||
if (mqttClientInstance.isConnected()) {
|
||||
mqttClientInstance.disconnect();
|
||||
mqttClientInstance.close();
|
||||
log.info("【MQTT连接关闭】客户端已优雅断开连接");
|
||||
}
|
||||
// 新增:关闭实例释放资源
|
||||
mqttClientInstance.close();
|
||||
// 新增:置空实例加速GC
|
||||
mqttClientInstance = null;
|
||||
} catch (MqttException e) {
|
||||
log.error("【MQTT连接关闭异常】:" + e.getMessage(), e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -448,14 +448,16 @@ public class MqttMessageHandler implements SmartLifecycle {
|
|||
currentReconnectCount++;
|
||||
log.info("【MQTT重连】第{}次尝试重连(间隔{}秒)", currentReconnectCount, reconnectInterval);
|
||||
|
||||
// 兼容极端场景:先强制断开(无论当前状态),再重新连接
|
||||
// 最小改动:补充close+置空,彻底释放旧实例
|
||||
try {
|
||||
if (mqttClient.isConnected()) {
|
||||
mqttClient.disconnect();
|
||||
log.info("【MQTT重连】已断开旧连接");
|
||||
}
|
||||
// 新增:关闭旧实例释放资源
|
||||
mqttClient.close();
|
||||
} catch (Exception e) {
|
||||
log.warn("【MQTT重连】断开旧连接失败(忽略):{}", e.getMessage());
|
||||
log.warn("【MQTT重连】断开/关闭旧连接失败(忽略):{}", e.getMessage());
|
||||
}
|
||||
|
||||
// 2. 生成新的clientId(和MqttConfig中一致的规则:原clientId + 随机后缀)
|
||||
|
|
|
|||
Loading…
Reference in New Issue