|
@@ -1,9 +1,11 @@
|
|
|
package com.care.mqtt.service;
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.care.mqtt.tool.MqttDataConnector;
|
|
|
|
|
|
import com.care.common.entity.CareDevice;
|
|
|
+import com.care.mqtt.tool.MqttDataConnectorPool;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
@@ -26,18 +28,24 @@ public class MqttPublishService {
|
|
|
public boolean publish(CareDevice careDevice,String data) {
|
|
|
try {
|
|
|
|
|
|
- String topic = careDevice.getTopic();
|
|
|
- String cliendId = careDevice.getClientId();
|
|
|
+ CareDevice careDevicePublish = new CareDevice();
|
|
|
+ BeanUtil.copyProperties(careDevice,careDevicePublish);
|
|
|
+
|
|
|
+ String topic = careDevicePublish.getTopic();
|
|
|
+ String cliendId = careDevicePublish.getClientId();
|
|
|
if (StringUtils.isEmpty(topic) || StringUtils.isEmpty(cliendId)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
String publishTopic = topic.replace("event","control");
|
|
|
String publishCliendId = cliendId + "_publish";
|
|
|
- careDevice.setTopic(publishTopic);
|
|
|
- careDevice.setTopic(publishCliendId);
|
|
|
|
|
|
- MqttDataConnector mqttDataConnector = mqttConnectorPoolService.addOne(careDevice);
|
|
|
+ MqttDataConnector mqttDataConnector = MqttDataConnectorPool.getMqttDataConnectorMap().get(publishCliendId);
|
|
|
+ if (mqttDataConnector == null) {
|
|
|
+ careDevicePublish.setTopic(publishTopic);
|
|
|
+ careDevicePublish.setClientId(publishCliendId);
|
|
|
+ mqttDataConnector = mqttConnectorPoolService.addOne(careDevicePublish);
|
|
|
+ }
|
|
|
|
|
|
mqttDataConnector.publish(publishTopic, data);
|
|
|
|