From 385cea8d9069e71b3d4e2a109e56afb39849f420 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 29 May 2025 07:33:34 +0800 Subject: [PATCH] =?UTF-8?q?reactor=EF=BC=9A=E3=80=90IoT=20=E7=89=A9?= =?UTF-8?q?=E8=81=94=E7=BD=91=E3=80=91=E5=90=88=E5=B9=B6=20messagebus=20?= =?UTF-8?q?=E5=92=8C=20common=20=E5=8C=85=EF=BC=8C=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=88=B0=20core=20=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao-module-iot-core/pom.xml | 56 ++++++++++++++-- .../iot/core}/biz/IotDeviceCommonApi.java | 2 +- .../enums/IotDeviceMessageIdentifierEnum.java | 2 +- .../core}/enums/IotDeviceMessageTypeEnum.java | 2 +- .../IotMessageBusAutoConfiguration.java | 15 +++-- .../config/IotMessageBusProperties.java | 2 +- .../core}/messagebus/core/IotMessageBus.java | 2 +- .../core/IotMessageBusSubscriber.java | 2 +- .../core/local/LocalIotMessage.java | 2 +- .../core/local/LocalIotMessageBus.java | 8 +-- .../core/rocketmq/RocketMQIotMessageBus.java | 6 +- .../core/mq}/message/IotDeviceMessage.java | 6 +- .../mq/producer/IotDeviceMessageProducer.java | 48 ++++++++++++++ .../main/resources/META-INF/spring.factories | 2 + .../core}/messagebus/core/TestMessage.java | 2 +- .../LocalIotMessageBusIntegrationTest.java | 8 +-- .../rocketmq/RocketMQIotMessageBusTest.java | 13 ++-- .../yudao-module-iot-common/pom.xml | 26 -------- .../iot/common/enums/IotCommonConstants.java | 22 ------- .../yudao-module-iot-message-bus/pom.xml | 65 ------------------- .../main/resources/META-INF/spring.factories | 2 - 21 files changed, 136 insertions(+), 157 deletions(-) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common => src/main/java/cn/iocoder/yudao/module/iot/core}/biz/IotDeviceCommonApi.java (58%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common => src/main/java/cn/iocoder/yudao/module/iot/core}/enums/IotDeviceMessageIdentifierEnum.java (96%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common => src/main/java/cn/iocoder/yudao/module/iot/core}/enums/IotDeviceMessageTypeEnum.java (96%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/config/IotMessageBusAutoConfiguration.java (76%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/config/IotMessageBusProperties.java (91%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/IotMessageBus.java (89%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/IotMessageBusSubscriber.java (87%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/local/LocalIotMessage.java (72%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/local/LocalIotMessageBus.java (87%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot => src/main/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/rocketmq/RocketMQIotMessageBus.java (94%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common => src/main/java/cn/iocoder/yudao/module/iot/core/mq}/message/IotDeviceMessage.java (86%) create mode 100644 yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/producer/IotDeviceMessageProducer.java create mode 100644 yudao-module-iot/yudao-module-iot-core/src/main/resources/META-INF/spring.factories rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot => src/test/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/TestMessage.java (65%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot => src/test/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/local/LocalIotMessageBusIntegrationTest.java (94%) rename yudao-module-iot/yudao-module-iot-core/{yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot => src/test/java/cn/iocoder/yudao/module/iot/core}/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java (95%) delete mode 100644 yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/pom.xml delete mode 100644 yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotCommonConstants.java delete mode 100644 yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/pom.xml delete mode 100644 yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/resources/META-INF/spring.factories diff --git a/yudao-module-iot/yudao-module-iot-core/pom.xml b/yudao-module-iot/yudao-module-iot-core/pom.xml index 3417fb05ec..3f4bb1f126 100644 --- a/yudao-module-iot/yudao-module-iot-core/pom.xml +++ b/yudao-module-iot/yudao-module-iot-core/pom.xml @@ -7,19 +7,61 @@ cn.iocoder.boot ${revision} - - yudao-module-iot-common - yudao-module-iot-message-bus - 4.0.0 yudao-module-iot-core - pom + jar ${project.artifactId} - iot 模块下,提供 iot-biz 和 iot-gateway 模块的核心功能。 - 例如说:消息总线、消息协议(编解码)等。 + iot 模块下,提供 iot-biz 和 iot-gateway 模块的核心功能。例如说: + 1. 消息总线:跨 iot-biz 和 iot-gateway 的设备消息。可选择使用 spring event、redis stream、rocketmq、kafka、rabbitmq 等。 + 2. 查询设备信息的通用 API + + + cn.iocoder.boot + yudao-common + + + + + org.springframework.boot + spring-boot-starter + + + + + org.springframework.data + spring-data-redis + true + + + + org.apache.rocketmq + rocketmq-spring-boot-starter + true + + + + org.springframework.amqp + spring-rabbit + true + + + + org.springframework.kafka + spring-kafka + true + + + + + org.springframework.boot + spring-boot-starter-test + test + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/biz/IotDeviceCommonApi.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/biz/IotDeviceCommonApi.java similarity index 58% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/biz/IotDeviceCommonApi.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/biz/IotDeviceCommonApi.java index 3b5385bf98..c3a57e5a0c 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/biz/IotDeviceCommonApi.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/biz/IotDeviceCommonApi.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.common.biz; +package cn.iocoder.yudao.module.iot.core.biz; // TODO @芋艿:待实现 public interface IotDeviceCommonApi { diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageIdentifierEnum.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageIdentifierEnum.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageIdentifierEnum.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageIdentifierEnum.java index 88de746035..ae9c9dee34 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageIdentifierEnum.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageIdentifierEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.common.enums; +package cn.iocoder.yudao.module.iot.core.enums; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageTypeEnum.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageTypeEnum.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageTypeEnum.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageTypeEnum.java index 156e614c42..6e0feb16e5 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotDeviceMessageTypeEnum.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/enums/IotDeviceMessageTypeEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.common.enums; +package cn.iocoder.yudao.module.iot.core.enums; import cn.iocoder.yudao.framework.common.core.ArrayValuable; import lombok.Getter; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusAutoConfiguration.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusAutoConfiguration.java similarity index 76% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusAutoConfiguration.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusAutoConfiguration.java index aa216b55ad..6505058e77 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusAutoConfiguration.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusAutoConfiguration.java @@ -1,8 +1,9 @@ -package cn.iocoder.yudao.module.iot.messagebus.config; +package cn.iocoder.yudao.module.iot.core.messagebus.config; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.local.LocalIotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.rocketmq.RocketMQIotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.local.LocalIotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.rocketmq.RocketMQIotMessageBus; +import cn.iocoder.yudao.module.iot.core.mq.producer.IotDeviceMessageProducer; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.autoconfigure.RocketMQProperties; import org.apache.rocketmq.spring.core.RocketMQTemplate; @@ -24,6 +25,11 @@ import org.springframework.context.annotation.Configuration; @Slf4j public class IotMessageBusAutoConfiguration { + @Bean + public IotDeviceMessageProducer deviceMessageProducer(IotMessageBus messageBus) { + return new IotDeviceMessageProducer(messageBus); + } + // ==================== Local 实现 ==================== @Configuration @@ -46,6 +52,7 @@ public class IotMessageBusAutoConfiguration { public static class RocketMQIotMessageBusConfiguration { @Bean + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public IotMessageBus rocketMQIotMessageBus(RocketMQProperties rocketMQProperties, RocketMQTemplate rocketMQTemplate) { log.info("[rocketMQIotMessageBus][创建 RocketMQ IoT 消息总线]"); return new RocketMQIotMessageBus(rocketMQProperties, rocketMQTemplate); diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusProperties.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusProperties.java similarity index 91% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusProperties.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusProperties.java index eac974ee54..501eb2b0d8 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/config/IotMessageBusProperties.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/config/IotMessageBusProperties.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.messagebus.config; +package cn.iocoder.yudao.module.iot.core.messagebus.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBus.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBus.java similarity index 89% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBus.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBus.java index 931e963989..b032298795 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBus.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBus.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.messagebus.core; +package cn.iocoder.yudao.module.iot.core.messagebus.core; /** * IoT 消息总线接口 diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBusSubscriber.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBusSubscriber.java similarity index 87% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBusSubscriber.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBusSubscriber.java index a8bdff9fa3..631fa88e5e 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/IotMessageBusSubscriber.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/IotMessageBusSubscriber.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.messagebus.core; +package cn.iocoder.yudao.module.iot.core.messagebus.core; /** * IoT 消息总线订阅者接口 diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessage.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessage.java similarity index 72% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessage.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessage.java index bd048e558a..c8c727792a 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessage.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessage.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.messagebus.core.local; +package cn.iocoder.yudao.module.iot.core.messagebus.core.local; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBus.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBus.java similarity index 87% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBus.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBus.java index 5a27a676b2..af73547200 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBus.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBus.java @@ -1,8 +1,8 @@ -package cn.iocoder.yudao.module.iot.messagebus.core.local; +package cn.iocoder.yudao.module.iot.core.messagebus.core.local; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBusSubscriber; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBusSubscriber; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; @@ -12,8 +12,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; /** * 本地的 {@link IotMessageBus} 实现类 diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBus.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBus.java similarity index 94% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBus.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBus.java index 346d66efbf..a304ef4597 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBus.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBus.java @@ -1,9 +1,9 @@ -package cn.iocoder.yudao.module.iot.messagebus.core.rocketmq; +package cn.iocoder.yudao.module.iot.core.messagebus.core.rocketmq; import cn.hutool.core.util.TypeUtil; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBusSubscriber; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBusSubscriber; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/message/IotDeviceMessage.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/message/IotDeviceMessage.java similarity index 86% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/message/IotDeviceMessage.java rename to yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/message/IotDeviceMessage.java index c55e806691..43b9f2e5d4 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/message/IotDeviceMessage.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/message/IotDeviceMessage.java @@ -1,7 +1,7 @@ -package cn.iocoder.yudao.module.iot.common.message; +package cn.iocoder.yudao.module.iot.core.mq.message; -import cn.iocoder.yudao.module.iot.common.enums.IotDeviceMessageIdentifierEnum; -import cn.iocoder.yudao.module.iot.common.enums.IotDeviceMessageTypeEnum; +import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageIdentifierEnum; +import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/producer/IotDeviceMessageProducer.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/producer/IotDeviceMessageProducer.java new file mode 100644 index 0000000000..7e23dc4b6d --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/mq/producer/IotDeviceMessageProducer.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.iot.core.mq.producer; + +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; +import lombok.RequiredArgsConstructor; + +/** + * IoT 设备消息生产者 + * + * @author 芋道源码 + */ +@RequiredArgsConstructor +public class IotDeviceMessageProducer { + + /** + * 【消息总线】应用的设备消息 Topic,由 iot-gateway 发给 iot-biz 进行消费 + */ + private static final String MESSAGE_BUS_DEVICE_MESSAGE_TOPIC = "iot_device_message"; + + /** + * 【消息总线】设备消息 Topic,由 iot-biz 发送给 iot-gateway 的某个 “server”(protocol) 进行消费 + * + * 其中,%s 就是该“server”(protocol) 的标识 + */ + private static final String MESSAGE_BUS_GATEWAY_DEVICE_MESSAGE_TOPIC = MESSAGE_BUS_DEVICE_MESSAGE_TOPIC + "/%s"; + + private final IotMessageBus messageBus; + + /** + * 发送设备消息 + * + * @param message 设备消息 + */ + public void sendDeviceMessage(IotDeviceMessage message) { + messageBus.post(MESSAGE_BUS_DEVICE_MESSAGE_TOPIC, message); + } + + /** + * 发送网关设备消息 + * + * @param server 网关的 server 标识 + * @param message 设备消息 + */ + public void sendGatewayDeviceMessage(String server, Object message) { + messageBus.post(String.format(MESSAGE_BUS_GATEWAY_DEVICE_MESSAGE_TOPIC, server), message); + } + +} diff --git a/yudao-module-iot/yudao-module-iot-core/src/main/resources/META-INF/spring.factories b/yudao-module-iot/yudao-module-iot-core/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..bfb44267ce --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-core/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +cn.iocoder.yudao.module.iot.core.messagebus.config.IotMessageBusAutoConfiguration \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/TestMessage.java b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/TestMessage.java similarity index 65% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/TestMessage.java rename to yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/TestMessage.java index df12d601a5..e06c9ec04b 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/TestMessage.java +++ b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/TestMessage.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.messagebus.core; +package cn.iocoder.yudao.module.iot.core.messagebus.core; import lombok.Data; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBusIntegrationTest.java b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBusIntegrationTest.java similarity index 94% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBusIntegrationTest.java rename to yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBusIntegrationTest.java index c44997f6c7..de757dd71e 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/local/LocalIotMessageBusIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/local/LocalIotMessageBusIntegrationTest.java @@ -1,8 +1,8 @@ -package cn.iocoder.yudao.module.iot.messagebus.core.local; +package cn.iocoder.yudao.module.iot.core.messagebus.core.local; -import cn.iocoder.yudao.module.iot.messagebus.config.IotMessageBusAutoConfiguration; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBusSubscriber; +import cn.iocoder.yudao.module.iot.core.messagebus.config.IotMessageBusAutoConfiguration; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBusSubscriber; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java similarity index 95% rename from yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java rename to yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java index bd8ab074d4..babd3b252e 100644 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/test/java/cn/iocoder/yudao/module/iot/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java +++ b/yudao-module-iot/yudao-module-iot-core/src/test/java/cn/iocoder/yudao/module/iot/core/messagebus/core/rocketmq/RocketMQIotMessageBusTest.java @@ -1,17 +1,14 @@ -package cn.iocoder.yudao.module.iot.messagebus.core.rocketmq; +package cn.iocoder.yudao.module.iot.core.messagebus.core.rocketmq; import cn.hutool.core.util.IdUtil; -import cn.iocoder.yudao.module.iot.messagebus.config.IotMessageBusAutoConfiguration; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBus; -import cn.iocoder.yudao.module.iot.messagebus.core.IotMessageBusSubscriber; -import cn.iocoder.yudao.module.iot.messagebus.core.TestMessage; +import cn.iocoder.yudao.module.iot.core.messagebus.config.IotMessageBusAutoConfiguration; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBus; +import cn.iocoder.yudao.module.iot.core.messagebus.core.IotMessageBusSubscriber; +import cn.iocoder.yudao.module.iot.core.messagebus.core.TestMessage; import jakarta.annotation.Resource; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration; -import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.test.context.TestPropertySource; diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/pom.xml b/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/pom.xml deleted file mode 100644 index 3cf3fb69ed..0000000000 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - yudao-module-iot-core - cn.iocoder.boot - ${revision} - - 4.0.0 - yudao-module-iot-common - jar - - ${project.artifactId} - - iot 模块下,提供通用的功能。 - 1. 跨 iot-biz 和 iot-gateway 的设备消息 - 2. 查询设备信息的通用 API - - - - - cn.iocoder.boot - yudao-common - - - - diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotCommonConstants.java b/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotCommonConstants.java deleted file mode 100644 index 4a8860c28e..0000000000 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-common/src/main/java/cn/iocoder/yudao/module/iot/common/enums/IotCommonConstants.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.yudao.module.iot.common.enums; - -/** - * IoT 通用的枚举 - * - * @author 芋道源码 - */ -public interface IotCommonConstants { - - /** - * 【消息总线】应用的设备消息 Topic,由 iot-gateway 发给 iot-biz 进行消费 - */ - String MESSAGE_BUS_DEVICE_MESSAGE_TOPIC = "iot_device_message"; - - /** - * 【消息总线】设备消息 Topic,由 iot-biz 发送给 iot-gateway 的某个 “server”(protocol) 进行消费 - * - * 其中,%s 就是该“server”(protocol) 的标识 - */ - String MESSAGE_BUS_GATEWAY_DEVICE_MESSAGE_TOPIC = MESSAGE_BUS_DEVICE_MESSAGE_TOPIC + "/%s"; - -} diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/pom.xml b/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/pom.xml deleted file mode 100644 index 436ec9ec67..0000000000 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - yudao-module-iot-core - cn.iocoder.boot - ${revision} - - 4.0.0 - yudao-module-iot-message-bus - jar - - ${project.artifactId} - - iot 模块下,提供消息总线的功能。 - 可选择使用 spring event、redis stream、rocketmq、kafka、rabbitmq 等。 - - - - - cn.iocoder.boot - yudao-common - - - - - org.springframework.boot - spring-boot-starter - - - - - org.springframework.data - spring-data-redis - true - - - - org.apache.rocketmq - rocketmq-spring-boot-starter - true - - - - org.springframework.amqp - spring-rabbit - true - - - - org.springframework.kafka - spring-kafka - true - - - - - org.springframework.boot - spring-boot-starter-test - test - - - - \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/resources/META-INF/spring.factories b/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 04096de530..0000000000 --- a/yudao-module-iot/yudao-module-iot-core/yudao-module-iot-message-bus/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -cn.iocoder.yudao.module.iot.messagebus.config.IotMessageBusAutoConfiguration \ No newline at end of file