SpringBoot 整合RabbitMQ

SpringBoot 整合RabbitMQ

  • 生产者步骤
    1. 创建生产者工程(可以直接创建springboot的项目,这里并没有直接创建)

    2. 引入依赖

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>com.yang</groupId>
          <artifactId>producer-springboot</artifactId>
          <version>1.0-SNAPSHOT</version>
      
          <!-- 1. 父工程 -->
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.1.4.RELEASE</version>
          </parent>
      
      
          <dependencies>
              <!-- 2.springboot整合rabbitmq的依赖-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-amqp</artifactId>
              </dependency>
              <!-- 3.单元测试的依赖  -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
              </dependency>
          </dependencies>
      </project>
      
    3. 在resources包下创建application.yml配置文件

      # 配置RabbitMQ的基本信息
      spring:
        rabbitmq:
          host: 192.168.20.146
          port: 5672
          username: test
          password: test
          virtual-host: /test
      
    4. 创建启动类

      package com.yang;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      @SpringBootApplication
      public class ProducerApplication {
          public static void main(String[] args) {
              SpringApplication.run(ProducerApplication.class);
          }
      }
      
    5. 创建配置类(topic为例)

      @Configuration
      public class RabbitMQConfig {
      
          private static final String EXCHANGE_NAME = "boot_topic_exchange";
          private static final String QUEUE_EXCHANGE_NAME = "boot_queue";
      
          //1. 交换机
          @Bean("bootExchange")
          public Exchange bootExchange() {
              return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
          }
      
          //2. queue队列
          @Bean("bootQueue")
          public Queue bootQueue() {
              return QueueBuilder.durable(QUEUE_EXCHANGE_NAME).build();
          }
      
          //3. 队列和交换机的绑定关系 Binding
          /*
              1. 知道那个队列
              2. 知道那个交换机
              3. 设置Routing Key
           */
          @Bean
          public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,@Qualifier("bootExchange") Exchange exchange){
              return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
          }
      }
      
    6. 编写测试类测试一下

      @SpringBootTest
      @RunWith(SpringRunner.class)
      public class test {
      
          //1. 注入RabbitmqTemplate
          @Autowired
          private RabbitTemplate rabbitTemplate;
      
      
          @Test
          public void testSend() {
              rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.haha","boot mq hello...");
          }
      }
      
    7. 执行结果
      在这里插入图片描述


  • 消费者
    1. 创建生产者工程(这里直接通过springboot直接创建)
      在这里插入图片描述
      在这里插入图片描述

    2. 引入依赖(已经不需要了,自动创建帮我们引入了)

    3. 在resources包下创建application.yml配置文件(不需要创建了,但是需要把propertiest改成yml,然后添加配置即可)

      # 配置RabbitMQ的基本信息
      spring:
        rabbitmq:
          host: 192.168.20.146
          port: 5672
          username: test
          password: test
          virtual-host: /test
      
    4. 定义监听类,使用@RabbitListener

      package com.yang.consumerspringboot.rabbitmq.listener;
      
      import org.springframework.amqp.core.Message;
      import org.springframework.amqp.rabbit.annotation.RabbitListener;
      import org.springframework.stereotype.Component;
      
      
      @Component
      public class RabbitMQListener {
      	//queues是我们生产者那边刚刚定义的
          @RabbitListener(queues = "boot_queue")
          public void listenerQueue(Message message) {
          	//Message 导入的包不要导错了
                      System.out.println(new String(message.getBody()));
          }
      }
      
      
    5. 执行结果
      在这里插入图片描述


  • 小结
    • SpringBoot提供了快速整合RabbitMQ的方式
    • 基本信息再yml中配置,队列交互机以及绑定关系在配置类中使用Bean的方式配置
    • 生产端直接注入RabbitTemplate完成消息发送
    • 消费端直接使用@RabbitListener完成消息接收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值