aijinhui
2023-10-12 87a2fe3e6f1472a7e87e02d3fd956eee17b85352
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -1,7 +1,9 @@
package com.ruoyi.utils.mqtt;
import com.ruoyi.alarm.globalAlarm.service.impl.GlobalAlarmServiceImpl;
import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.statistical.service.StatisticalService;
import com.ruoyi.storage.minio.service.IStorageMinioEventService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
@@ -36,9 +38,9 @@
    @Override
    public void connectionLost(Throwable cause) {
        log.info("MQTT连接断开,发起重连......");
        try {
            while (!client.isConnected()) {
                Thread.sleep(5000);
        while (!client.isConnected()) {
            try {
                Thread.sleep(10000);
                if (null != client && !client.isConnected()) {
                    client.reconnect();
                    log.error("尝试重新连接");
@@ -46,9 +48,9 @@
                    client.connect(options);
                    log.error("尝试建立新连接");
                }
            } catch (Exception e) {
                log.error("断开重连异常:" + e.getMessage());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -68,12 +70,23 @@
    public void messageArrived(String topic, MqttMessage message) {
        try {
            // subscribe后得到的消息会执行到这里面
            log.info("接收消息 【主题】:" + topic + " 【内容】:" + new String(message.getPayload()));
            log.debug("接收消息 【主题】:" + topic + " 【内容】:" + new String(message.getPayload(), StandardCharsets.UTF_8));
            //进行业务处理(接收报警数据)
            GlobalAlarmServiceImpl globalAlarmService = SpringUtils.getBean(GlobalAlarmServiceImpl.class);
            globalAlarmService.receiveAlarm(topic, new String(message.getPayload(), StandardCharsets.UTF_8));
            if (topic.equals("minioEvent"))
            {
                IStorageMinioEventService storageMinioEventService = SpringUtils.getBean(IStorageMinioEventService.class);
                storageMinioEventService.parseStorageMinioEvent(new String(message.getPayload(), StandardCharsets.UTF_8));
            }
            if (topic.equals("radarWellData"))
            {
//                System.out.println(new String(message.getPayload(), StandardCharsets.UTF_8));
                StatisticalService statisticalService = SpringUtils.getBean(StatisticalService.class);
                statisticalService.data(new String(message.getPayload(), StandardCharsets.UTF_8));
            }
        } catch (Exception e) {
            log.info("处理mqtt消息异常:" + e);
            log.debug("处理mqtt消息异常:" + e);
        }
    }
@@ -86,10 +99,10 @@
            if (null != topic && null != qos) {
                if (client.isConnected()) {
                    client.subscribe(topic, qos);
                    log.info("mqtt连接成功,客户端ID:" + PropertiesUtil.MQTT_CLIENT_ID);
                    log.info("mqtt连接成功" );
                    log.info("--订阅主题::" + Arrays.toString(topic));
                } else {
                    log.info("mqtt连接失败,客户端ID:" + PropertiesUtil.MQTT_CLIENT_ID);
                    log.info("mqtt连接失败");
                }
            }
        } catch (Exception e) {