From e3b3edaacfb414d37ebddfd54ea28b47ec55e17e Mon Sep 17 00:00:00 2001
From: Dftre <3066417822@qq.com>
Date: Sun, 6 Oct 2024 19:35:01 +0800
Subject: [PATCH] =?UTF-8?q?rabbitmq=20=E7=9A=84demo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/application-druid.yml | 8 +--
.../main/resources/application-middleware.yml | 12 +++-
ruoyi-middleware/pom.xml | 8 ++-
.../ruoyi-middleware-rabbitmq/pom.xml | 33 +++++++++++
.../rabbitmq/DirectRabbitConfig.java | 57 +++++++++++++++++++
.../middleware/rabbitmq/DirectReceiver.java | 20 +++++++
.../rabbitmq/SendMessageController.java | 45 +++++++++++++++
.../ruoyi-middleware-starter/pom.xml | 4 ++
8 files changed, 181 insertions(+), 6 deletions(-)
create mode 100644 ruoyi-middleware/ruoyi-middleware-rabbitmq/pom.xml
create mode 100644 ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectRabbitConfig.java
create mode 100644 ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java
create mode 100644 ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index f4b48c3..6c5e4ae 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -12,10 +12,10 @@ spring:
username: root
password: 123456
# 从库数据源
- SLAVE:
- url: jdbc:mysql://127.0.0.1/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
- username: root
- password: 123456
+ # SLAVE:
+ # url: jdbc:mysql://127.0.0.1/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ # username: root
+ # password: 123456
druid:
# 初始连接数
initialSize: 5
diff --git a/ruoyi-admin/src/main/resources/application-middleware.yml b/ruoyi-admin/src/main/resources/application-middleware.yml
index 0c9d6ae..29d1945 100644
--- a/ruoyi-admin/src/main/resources/application-middleware.yml
+++ b/ruoyi-admin/src/main/resources/application-middleware.yml
@@ -22,10 +22,20 @@ spring:
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
+ #给项目来个名字
+ application:
+ name: ruoyi
+ #配置rabbitMq 服务器
+ rabbitmq:
+ enable: false
+ host: 127.0.0.1
+ port: 5672
+ username: guest
+ password: guest
# Minio配置
minio:
- enable: true
+ enable: false
downLoadLimit: 1024
primary: MASTER
client:
diff --git a/ruoyi-middleware/pom.xml b/ruoyi-middleware/pom.xml
index c6895eb..cbd9811 100644
--- a/ruoyi-middleware/pom.xml
+++ b/ruoyi-middleware/pom.xml
@@ -39,6 +39,12 @@
${ruoyi.version}
+
+ com.ruoyi
+ ruoyi-middleware-rabbitmq
+ ${ruoyi.version}
+
+
com.ruoyi
ruoyi-middleware-starter
@@ -52,8 +58,8 @@
ruoyi-middleware-minio
ruoyi-middleware-redis
+ ruoyi-middleware-rabbitmq
ruoyi-middleware-starter
-
pom
diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/pom.xml b/ruoyi-middleware/ruoyi-middleware-rabbitmq/pom.xml
new file mode 100644
index 0000000..8bfb14d
--- /dev/null
+++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ ruoyi-middleware
+ com.ruoyi
+ 3.8.8.3.1
+
+ 4.0.0
+
+ ruoyi-middleware-rabbitmq
+
+
+ 中间件
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+
+
+
diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectRabbitConfig.java b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectRabbitConfig.java
new file mode 100644
index 0000000..06e6c06
--- /dev/null
+++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectRabbitConfig.java
@@ -0,0 +1,57 @@
+package com.ruoyi.middleware.rabbitmq;
+
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.support.converter.DefaultClassMapper;
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : JCccc
+ * @CreateTime : 2019/9/3
+ * @Description :
+ **/
+@Configuration
+@ConditionalOnProperty(prefix = "spring.rabbitmq", name = { "enable" }, havingValue = "true", matchIfMissing = false)
+public class DirectRabbitConfig {
+
+ // 队列 起名:TestDirectQueue
+ @Bean
+ public Queue TestDirectQueue() {
+ // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
+ // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
+ // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
+ // return new Queue("TestDirectQueue",true,true,false);
+
+ // 一般设置一下队列的持久化就好,其余两个就是默认false
+ return new Queue("TestDirectQueue", true);
+ }
+
+ // Direct交换机 起名:TestDirectExchange
+ @Bean
+ DirectExchange TestDirectExchange() {
+ // return new DirectExchange("TestDirectExchange",true,true);
+ return new DirectExchange("TestDirectExchange", true, false);
+ }
+
+ // 绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting
+ @Bean
+ Binding bindingDirect() {
+ return BindingBuilder.bind(TestDirectQueue()).to(TestDirectExchange()).with("TestDirectRouting");
+ }
+
+ @Bean
+ public MessageConverter jsonToMapMessageConverter() {
+ DefaultClassMapper defaultClassMapper = new DefaultClassMapper();
+ // 指定反序列化期间要信任的一组包,星号 ( * ) 表示全部信任
+ defaultClassMapper.setTrustedPackages("*");
+ Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
+ jackson2JsonMessageConverter.setClassMapper(defaultClassMapper);
+ return jackson2JsonMessageConverter;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java
new file mode 100644
index 0000000..9dd24ce
--- /dev/null
+++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java
@@ -0,0 +1,20 @@
+package com.ruoyi.middleware.rabbitmq;
+
+import java.util.Map;
+
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConditionalOnProperty(prefix = "spring.rabbitmq", name = { "enable" }, havingValue = "true", matchIfMissing = false)
+@RabbitListener(queues = "TestDirectQueue") // 监听的队列名称 TestDirectQueue
+public class DirectReceiver {
+
+ @RabbitHandler
+ public void process(Map map) {
+ System.out.println("DirectReceiver消费者收到消息 : " + map.toString());
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java
new file mode 100644
index 0000000..50d8d4c
--- /dev/null
+++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java
@@ -0,0 +1,45 @@
+package com.ruoyi.middleware.rabbitmq;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ruoyi.common.annotation.Anonymous;
+
+/**
+ * @Author : JCccc
+ * @CreateTime : 2019/9/3
+ * @Description :
+ **/
+@RestController
+@RequestMapping("/rabbitmq")
+public class SendMessageController {
+
+ @Autowired
+ RabbitTemplate rabbitTemplate; //使用RabbitTemplate,这提供了接收/发送等等方法
+
+ @GetMapping("/sendDirectMessage")
+ @Anonymous
+ public String sendDirectMessage() {
+ String messageId = String.valueOf(UUID.randomUUID());
+ String messageData = "test message, hello!";
+ String createTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ Map map=new HashMap<>();
+ map.put("messageId",messageId);
+ map.put("messageData",messageData);
+ map.put("createTime",createTime);
+ //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange
+ rabbitTemplate.convertAndSend("TestDirectExchange", "TestDirectRouting", map);
+ return "ok";
+ }
+
+
+}
\ No newline at end of file
diff --git a/ruoyi-middleware/ruoyi-middleware-starter/pom.xml b/ruoyi-middleware/ruoyi-middleware-starter/pom.xml
index bb7eca4..ad3c9e8 100644
--- a/ruoyi-middleware/ruoyi-middleware-starter/pom.xml
+++ b/ruoyi-middleware/ruoyi-middleware-starter/pom.xml
@@ -32,6 +32,10 @@
ruoyi-middleware-redis
+
+ com.ruoyi
+ ruoyi-middleware-rabbitmq
+