mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 02:28:03 +08:00 
			
		
		
		
	修改:优化 EmqxService 实现
This commit is contained in:
		| @ -43,7 +43,7 @@ public class EmqxClient { | ||||
|  | ||||
|     private void createMqttClient() { | ||||
|         try { | ||||
|             mqttClient = new MqttClient(mqttConfig.getHostUrl(), "yudao-" + mqttConfig.getClientId(), new MemoryPersistence()); | ||||
|             mqttClient = new MqttClient(mqttConfig.getHostUrl(), "yudao" + mqttConfig.getClientId(), new MemoryPersistence()); | ||||
|             mqttClient.setCallback(emqxCallback); | ||||
|         } catch (MqttException e) { | ||||
|             log.error("创建MQTT客户端失败", e); | ||||
|  | ||||
| @ -1,34 +1,27 @@ | ||||
| package cn.iocoder.yudao.module.iot.emq.service; | ||||
|  | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.eclipse.paho.client.mqttv3.MqttClient; | ||||
| import org.eclipse.paho.client.mqttv3.MqttMessage; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| /** | ||||
|  * 用于处理MQTT消息的具体业务逻辑,如订阅回调 | ||||
|  * | ||||
|  * @author ahh | ||||
|  */ | ||||
| @Slf4j | ||||
| @Service | ||||
| public class EmqxService { | ||||
| public interface EmqxService { | ||||
|  | ||||
|     public void subscribeCallback(String topic, MqttMessage mqttMessage) { | ||||
|         log.info("收到消息,主题: {}, 内容: {}", topic, new String(mqttMessage.getPayload())); | ||||
|         // 根据不同的主题,处理不同的业务逻辑 | ||||
|         if (topic.contains("/property/post")) { | ||||
|             // 设备上报数据 | ||||
|         } | ||||
|     } | ||||
|     /** | ||||
|      * 订阅回调 | ||||
|      * | ||||
|      * @param topic       主题 | ||||
|      * @param mqttMessage 消息 | ||||
|      */ | ||||
|     void subscribeCallback(String topic, MqttMessage mqttMessage); | ||||
|  | ||||
|     public void subscribe(MqttClient client) { | ||||
|         try { | ||||
|             // 订阅默认主题,可以根据需要修改 | ||||
|             client.subscribe("$share/yudao/+/+/#", 1); | ||||
|             log.info("订阅默认主题成功"); | ||||
|         } catch (Exception e) { | ||||
|             log.error("订阅默认主题失败", e); | ||||
|         } | ||||
|     } | ||||
|     /** | ||||
|      * 订阅主题 | ||||
|      * | ||||
|      * @param client MQTT 客户端 | ||||
|      */ | ||||
|     void subscribe(MqttClient client); | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,37 @@ | ||||
| package cn.iocoder.yudao.module.iot.emq.service; | ||||
|  | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.eclipse.paho.client.mqttv3.MqttClient; | ||||
| import org.eclipse.paho.client.mqttv3.MqttMessage; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| /** | ||||
|  * 用于处理MQTT消息的具体业务逻辑,如订阅回调 | ||||
|  * | ||||
|  * @author ahh | ||||
|  */ | ||||
| @Slf4j | ||||
| @Service | ||||
| public class EmqxServiceImpl implements EmqxService { | ||||
|  | ||||
|     // TODO 多线程处理消息 | ||||
|     @Override | ||||
|     public void subscribeCallback(String topic, MqttMessage mqttMessage) { | ||||
|         log.info("收到消息,主题: {}, 内容: {}", topic, new String(mqttMessage.getPayload())); | ||||
|         // 根据不同的主题,处理不同的业务逻辑 | ||||
|         if (topic.contains("/property/post")) { | ||||
|             // 设备上报数据 | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void subscribe(MqttClient client) { | ||||
|         try { | ||||
|             // 订阅默认主题,可以根据需要修改 | ||||
|             client.subscribe("$share/yudao/+/+/#", 1); | ||||
|             log.info("订阅默认主题成功"); | ||||
|         } catch (Exception e) { | ||||
|             log.error("订阅默认主题失败", e); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 安浩浩
					安浩浩