package com.sandu.ximon.admin.localMQTT.client; import com.sandu.ximon.admin.localMQTT.config.MqttConfig; import com.sandu.ximon.admin.localMQTT.model.MqttClientVO; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @author van * @version 1.0 * msg: * @date 2022/11/29 13:46 */ @Slf4j @EnableScheduling @Component public class KeepEMQXClient { @Autowired private MqttConfig mqttConfig; @Resource private MqttClientManager mqttClientManager; @Scheduled(cron = "*/30 * * * * * ") public void keepClient() { List mqttClientList = mqttConfig.getClientList(); for (MqttClientVO mqttClientVO : mqttClientList) { //创建客户端,客户端ID:demo,回调类跟客户端ID一致 MqttClient mqttClient = MqttClientManager.getInstance().getMqttClientById(mqttClientVO.getClientId()); if (null == mqttClient) { log.error("Not exist mqttClient where it's clientId is {}", mqttClientVO.getClientId()); mqttClientManager.createMqttClient(mqttClientVO.getClientId(), mqttClientVO.getSubscribeTopic(), mqttClientVO.getUserName(), mqttClientVO.getPassword()); System.out.println(mqttClient.getClientId() + "重新创建完成"); } else { try { mqttClient.publish("v1/devices/keepAlive", new MqttMessage() ); } catch (MqttException e) { log.error("mqttClient.getClientId()..发送消息失败..........."); mqttClientManager.createMqttClient(mqttClientVO.getClientId(), mqttClientVO.getSubscribeTopic(), mqttClientVO.getUserName(), mqttClientVO.getPassword()); log.error("创建."+mqttClient.getClientId()+".成功..........."); } } }} }