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 +