diff --git a/ruoyi-common/ruoyi-common-mq/pom.xml b/ruoyi-common/ruoyi-common-mq/pom.xml
new file mode 100644
index 00000000..7e29837f
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/pom.xml
@@ -0,0 +1,19 @@
+
+
+
+ ruoyi-common
+ com.ruoyi
+ 2.3.0
+
+ 4.0.0
+ ruoyi-common-mq
+ pom
+
+ ruoyi-consumer
+ ruoyi-producer
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/pom.xml b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/pom.xml
new file mode 100644
index 00000000..b4c8f3b1
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/pom.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ ruoyi-common-mq
+ com.ruoyi
+ 2.3.0
+
+ 4.0.0
+ ruoyi-consumer
+ ruoyi-consumer
+ http://www.example.com
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+ 2.0.4
+
+
+
+
+ com.ruoyi
+ ruoyi-common-security
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ junit
+ junit
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/ConsumerApplication.java b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/ConsumerApplication.java
new file mode 100644
index 00000000..f243bb3e
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/ConsumerApplication.java
@@ -0,0 +1,17 @@
+package com.ruoyi.consumer;
+
+import com.ruoyi.common.security.annotation.EnableCustomConfig;
+import com.ruoyi.common.security.annotation.EnableRyFeignClients;
+import org.springframework.boot.SpringApplication;
+import org.springframework.cloud.client.SpringCloudApplication;
+
+@EnableCustomConfig
+@EnableRyFeignClients
+@SpringCloudApplication
+public class ConsumerApplication {
+ public static void main(String[] args)
+ {
+ SpringApplication.run(ConsumerApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ ConsumerApplication-消费者服务启动成功 ლ(´ڡ`ლ)゙ \n" );
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/listener/DemoMqListener.java b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/listener/DemoMqListener.java
new file mode 100644
index 00000000..06661ab7
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/java/com/ruoyi/consumer/listener/DemoMqListener.java
@@ -0,0 +1,17 @@
+package com.ruoyi.consumer.listener;
+
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.stereotype.Component;
+
+@Component
+@RocketMQMessageListener(consumerGroup = "groupB", topic = "topicB",
+ accessKey = "rocketmq2",secretKey = "12345678")
+public class DemoMqListener implements RocketMQListener {
+
+ @Override
+ public void onMessage(Object o) {
+ System.out.println(o);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/banner.txt b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/banner.txt
new file mode 100644
index 00000000..2b449bfc
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+ /$$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$$ /$$ /$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$
+ /$$_____/ /$$__ $$| $$__ $$ /$$_____/| $$ | $$| $$_ $$_ $$ /$$__ $$ /$$__ $$
+| $$ | $$ \ $$| $$ \ $$| $$$$$$ | $$ | $$| $$ \ $$ \ $$| $$$$$$$$| $$ \__/
+| $$ | $$ | $$| $$ | $$ \____ $$| $$ | $$| $$ | $$ | $$| $$_____/| $$
+| $$$$$$$| $$$$$$/| $$ | $$ /$$$$$$$/| $$$$$$/| $$ | $$ | $$| $$$$$$$| $$
+ \_______/ \______/ |__/ |__/|_______/ \______/ |__/ |__/ |__/ \_______/|__/
+
+|__/
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/bootstrap.yml b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/bootstrap.yml
new file mode 100644
index 00000000..7ee06415
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/bootstrap.yml
@@ -0,0 +1,52 @@
+# Tomcat
+server:
+ port: 9206
+ tomcat:
+ # tomcat的URI编码
+ uri-encoding: UTF-8
+# Spring
+spring:
+ http:
+ encoding:
+ force: true
+ application:
+ # 应用名称
+ name: ruoyi-consumer
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 127.0.0.1:8848
+ config:
+ # 配置中心地址
+ server-addr: 127.0.0.1:8848
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-dataids: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+rocketmq:
+ # rocketmq的NameServer地址
+ name-server: 127.0.0.1:9876
+# # 生产者端需要配置
+# consumer:
+# # 必须指定一个group
+# group: groupB
+# access-key: rocketmq2
+# SecretKey: 123456781
+# cloud:
+# nacos:
+# discovery:
+# # 服务注册地址
+# server-addr: 127.0.0.1:8848
+# config:
+# # 配置中心地址
+# server-addr: 127.0.0.1:8848
+# # 配置文件格式
+# file-extension: yml
+# # 共享配置
+# shared-dataids: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+## namespace: 363618e3-1aba-4b9b-a608-1bb8d6a03c6d
+
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/logback.xml b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/logback.xml
new file mode 100644
index 00000000..18eefe7d
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/main/resources/logback.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+ :ss} %-5level ${springAppName:-} %thread %logger %msg%n"/>
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/test/java/com/ruoyi/AppTest.java b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/test/java/com/ruoyi/AppTest.java
new file mode 100644
index 00000000..e5834330
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-consumer/src/test/java/com/ruoyi/AppTest.java
@@ -0,0 +1,20 @@
+package com.ruoyi;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+{
+ /**
+ * Rigorous Test :-)
+ */
+ @Test
+ public void shouldAnswerWithTrue()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/pom.xml b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/pom.xml
new file mode 100644
index 00000000..b588e920
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/pom.xml
@@ -0,0 +1,69 @@
+
+
+
+
+ ruoyi-common-mq
+ com.ruoyi
+ 2.3.0
+
+ 4.0.0
+ com.ruoyi
+ ruoyi-producer
+
+ ruoyi-producer
+
+ http://www.example.com
+
+
+
+
+ com.ruoyi
+ ruoyi-common-security
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+ 2.0.4
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ junit
+ junit
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/ProducerApplication.java b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/ProducerApplication.java
new file mode 100644
index 00000000..c2e8f234
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/ProducerApplication.java
@@ -0,0 +1,18 @@
+package com.ruoyi.producer;
+
+
+import com.ruoyi.common.security.annotation.EnableCustomConfig;
+import com.ruoyi.common.security.annotation.EnableRyFeignClients;
+import org.springframework.boot.SpringApplication;
+import org.springframework.cloud.client.SpringCloudApplication;
+
+@EnableCustomConfig
+@EnableRyFeignClients
+@SpringCloudApplication
+public class ProducerApplication {
+ public static void main(String[] args)
+ {
+ SpringApplication.run(ProducerApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ ProducerApplication-生产者服务启动成功 ლ(´ڡ`ლ)゙ \n" );
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/config/RocketMqConfig.java b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/config/RocketMqConfig.java
new file mode 100644
index 00000000..425b4e53
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/config/RocketMqConfig.java
@@ -0,0 +1,26 @@
+package com.ruoyi.producer.config;
+
+import org.apache.rocketmq.acl.common.AclClientRPCHook;
+import org.apache.rocketmq.acl.common.SessionCredentials;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.remoting.RPCHook;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+public class RocketMqConfig {
+ @Autowired
+ private RocketMQTemplate rocketMQTemplate;
+
+ @Bean
+ public RocketMQTemplate buildRocketMqTemplate(){
+ DefaultMQProducer defaultMQProducer= new DefaultMQProducer(getAclRPCHook());
+ rocketMQTemplate.setProducer(defaultMQProducer);
+ return rocketMQTemplate;
+ }
+
+ RPCHook getAclRPCHook() {
+ return new AclClientRPCHook(new SessionCredentials("rocketmq","12345678"));
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoService.java b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoService.java
new file mode 100644
index 00000000..73f35589
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoService.java
@@ -0,0 +1,6 @@
+package com.ruoyi.producer.service;
+
+public interface RocketMqDemoService {
+
+ public void sendMessage();
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoServiceImpl.java b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoServiceImpl.java
new file mode 100644
index 00000000..b5a99037
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/main/java/com/ruoyi/producer/service/RocketMqDemoServiceImpl.java
@@ -0,0 +1,18 @@
+package com.ruoyi.producer.service;
+
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class RocketMqDemoServiceImpl implements RocketMqDemoService {
+ @Resource
+ private RocketMQTemplate rocketMQTemplate;
+
+ @Override
+ public void sendMessage() {
+ rocketMQTemplate.syncSend("topicB", "222");
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/test/java/com/ruoyi/AppTest.java b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/test/java/com/ruoyi/AppTest.java
new file mode 100644
index 00000000..e5834330
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mq/ruoyi-producer/src/test/java/com/ruoyi/AppTest.java
@@ -0,0 +1,20 @@
+package com.ruoyi;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+{
+ /**
+ * Rigorous Test :-)
+ */
+ @Test
+ public void shouldAnswerWithTrue()
+ {
+ assertTrue( true );
+ }
+}