New file |
| | |
| | | package com.ruoyi.jianguan.mqtt.callback; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.core.utils.HttpUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.jianguan.mqtt.config.TopicConstants; |
| | | import com.ruoyi.system.api.domain.SysRole; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.eclipse.paho.client.mqttv3.*; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.UUID; |
| | | import java.util.concurrent.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 消费监听 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class PushCallback implements MqttCallback { |
| | | private static MqttConnectOptions options; |
| | | private static MqttClient client; |
| | | private static final double EARTH_RADIUS = 6378137.0; |
| | | |
| | | |
| | | @Override |
| | | public void connectionLost(Throwable throwable) { |
| | | if (client == null || !client.isConnected()) { |
| | | System.out.println("连接断开,正在重连...."); |
| | | int[] Qos = {0}; |
| | | String[] topic1 = {TopicConstants.CHARGE_PILE_CODE}; |
| | | try { |
| | | client.connect(options); |
| | | client.subscribe(topic1, Qos); |
| | | log.info("连接失败重连成功"); |
| | | } catch (MqttException e) { |
| | | log.info("连接失败重连失败"); |
| | | log.info("connectionLost e:{}", e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void messageArrived(String topic, MqttMessage message) throws Exception { |
| | | System.err.println("接收消息主题 : " + topic); |
| | | System.err.println("接收消息Qos : " + message.getQos()); |
| | | System.err.println("接收消息内容 : " + new String(message.getPayload())); |
| | | |
| | | String silentMessage = new String(message.getPayload()); |
| | | JSONObject jsonObject = JSONObject.parseObject(silentMessage); |
| | | String messageType = jsonObject.getString("type"); |
| | | if(StringUtils.isEmpty(messageType)){ |
| | | log.warn("接收消息类型为空"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { |
| | | |
| | | } |
| | | |
| | | } |