SpringBoot学习-整合RabbitMQ

简介

在SpringBoot中,只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate发送消息,使用注解接收消息。

一般开发过程中:

生产者工程:

  1. application.yml文件配置RabbitMQ相关信息;
  2. 在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定;
  3. 注入RabbitTemplate对象,通过RabbitTemplate对象发送消息到交换机。

消费者工程:

  1. application.yml文件配置RabbitMQ相关信息;
  2. 创建消息处理类,用于接收队列中的消息并进行处理。

搭建生产者工程

  1. 创建SpringBoot工程

  2. 引入依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <dependencies>
    <!--引入RabbitMQ依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <!--使用SpringMVC进行测试-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>
  3. 编写配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    #RabbitMQ配置
    spring:
    rabbitmq:
    host: 192.168.0.8
    port: 5672
    virtual-host: /ligangit
    username: ligangit
    password: ligangit
  4. 绑定交换机和队列

    创建RabbitMQ队列与交换机绑定的配置类RabbitMQConfig

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /**
    * RabbitMQ配置类
    */
    @Configuration
    public class RabbitMQConfig {
    //交换机名称
    public static final String ITEM_TOPIC_EXCHANGE = "item_topic_exchange";
    //队列名称
    public static final String IMTE_QUEUE = "item_queue";

    //声明交换机
    @Bean("itemTopicExchange")
    public Exchange topicExchange() {
    return ExchangeBuilder.topicExchange(ITEM_TOPIC_EXCHANGE).durable(true).build();
    }

    //声明队列
    @Bean("itemQueue")
    public Queue itemQueue() {
    return QueueBuilder.durable(IMTE_QUEUE).build();
    }

    //绑定队列和交换机
    @Bean
    public Binding itemQueueExchange(@Qualifier("itemQueue") Queue queue, @Qualifier("itemTopicExchange") Exchange exchange) {
    return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
    }
    }
  5. 消息发送Controller

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /**
    * 发送消息的测试类
    */
    @RestController
    public class SendMsgController {

    //注入RabbitTemplate模板
    @Autowired
    private RabbitTemplate rabbitTemplate;
    /**
    * 测试
    */
    @GetMapping("/sendmsg")
    public String sendMsg(@RequestParam String msg, @RequestParam String key) {
    /**
    * 发送消息
    * 参数一:交换机名称
    * 参数二:路由key
    * 参数三:发送的消息
    */
    rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE,key,msg);
    //返回信息
    return "发送消息成功";
    }
    }
  1. 测试

    http://localhost:8888/sendmsg?msg=helloSpringboot&key=item.insert

  2. 结果

    访问

    MQ中数据

搭建消费者工程

  1. 创建SpringBoot工程

  2. 引入依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <dependencies>
    <!--引入RabbitMQ依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <!--使用SpringMVC进行测试-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>
  3. 编写配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    #RabbitMQ配置
    spring:
    rabbitmq:
    host: 192.168.0.8
    port: 5672
    virtual-host: /ligangit
    username: ligangit
    password: ligangit
  4. 编写消息监听处理类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
    * 消费者监听类
    */
    @Component
    public class MyListener {
    @RabbitListener(queues = "item_queue")
    public void msg(String msg) {
    System.out.println("消费者消费消息了:"+msg);
    }
    }
  5. 测试

    http://localhost:8888/sendmsg?msg=helloSpringbootConsumer&key=item.insert

  6. 结果

    结果

最后更新: 2020年08月22日 12:47

原始链接: http://ligangit.com/2020/08/22/SpringBoot学习-整合RabbitMQ/

× 请我吃糖~
打赏二维码