jiangping
2023-10-13 50c6151c164d8d6bd4d052257c75ba424883fecb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.doumee.core.mqtt.service;
 
import com.doumee.core.mqtt.config.MqttClientInit;
import com.doumee.core.mqtt.config.MqttConfig;
import com.doumee.service.business.DeviceService;
import com.doumee.service.business.DeviceSubcribeService;
import org.eclipse.paho.client.mqttv3.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
/**
 * @author T14
 */
@Service
public class MqttPushCallback implements MqttCallback {
        @Autowired
        private DeviceSubcribeService deviceSubcribeService;
        @Autowired
        private MqttConfig mqttConfig;
        //接收消息回调
        @Override
        public void connectionLost(Throwable cause) {
 
            // 连接丢失后,一般在这里面进行重连
            System.out.println("连接断开,重连中");
            try {
                MqttClientInit.refreshClient();
            } catch (MqttException e) {
                throw new RuntimeException(e);
            }
        }
 
        @Override
        public void deliveryComplete(IMqttDeliveryToken token) {
            System.out.println("deliveryComplete---------" + token.isComplete());
        }
 
        @Override
        public void messageArrived(String topic, MqttMessage message) throws Exception {
            // subscribe后得到的消息会执行到这里面
            try {
                System.out.println("接收消息主题 : " + topic);
                System.out.println("接收消息Qos : " + message.getQos());
                System.out.println("接收消息内容 : " + new String(message.getPayload()));
                deviceSubcribeService.listener(message.getId()+"",new String(message.getPayload()),topic);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
}