SpringBoot整合消息队列RabbitMQ的方法是什么

其他教程   发布日期:2023年09月09日   浏览次数:398

本篇内容介绍了“SpringBoot整合消息队列RabbitMQ的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    简介

    在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ

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

    一般在开发过程中:

    生产者工程:

    • application.yml文件配置RabbitMQ相关信息;

    • 在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定

    • 注入RabbitTemplate对象,通过RabbitTemplate对象发送消息到交换机

    消费者工程:

    • application.yml文件配置RabbitMQ相关信息

    • 创建消息处理类,用于接收队列中的消息并进行处理

    生产端

    1. 创建生产者SpringBoot工程(maven)
    2. 引入start,依赖坐标
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>

    3. 编写yml配置,基本信息配置
    4. 定义交换机,队列以及绑定关系的配置类
    5. 注入RabbitTemplate,调用方法,完成消息发送

    添加依赖

    修改pom.xml文件内容为如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0</modelVersion>
    6. <parent>
    7. <groupId>org.springframework.boot</groupId>
    8. <artifactId>spring-boot-starter-parent</artifactId>
    9. <version>2.1.4.RELEASE</version>
    10. </parent>
    11. <groupId>com.itheima</groupId>
    12. <artifactId>springboot-rabbitmq-producer</artifactId>
    13. <version>1.0-SNAPSHOT</version>
    14. <dependencies>
    15. <dependency>
    16. <groupId>org.springframework.boot</groupId>
    17. <artifactId>spring-boot-starter-amqp</artifactId>
    18. </dependency>
    19. <dependency>
    20. <groupId>org.springframework.boot</groupId>
    21. <artifactId>spring-boot-starter-test</artifactId>
    22. </dependency>
    23. </dependencies>
    24. </project>

    启动类

    1. package com.itheima.rabbitmq;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class ProducerApplication {
    6. public static void main(String[] args) {
    7. SpringApplication.run(ProducerApplication.class);
    8. }
    9. }

    配置RabbitMQ

    配置文件

    创建application.yml,内容如下:

    spring:
    rabbitmq:
    host: localhost
    port: 5672
    virtual-host: /itcast
    username: heima
    password: heima

    绑定交换机和队列

    创建RabbitMQ队列与交换机绑定的配置类com.itheima.rabbitmq.config.RabbitMQConfig

    1. package com.itheima.rahhitmq.config;
    2. import org.springframework.amqp.core.*;
    3. import org.springframework.beans.factory.annotation.Qualifier;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. @Configuration /// 配置类
    7. public class RabbitMQConfig {
    8. public static final String EXCHAGE_NAME = "boot_topic_exchange";
    9. public static final String QUEUE_NAME = "boot_queue";
    10. // 交换机
    11. @Bean("bootExchange")
    12. public Exchange bootExchange(){
    13. // 构建交换机对象
    14. return ExchangeBuilder.topicExchange(EXCHAGE_NAME).durable(true).build();
    15. }
    16. //Queue 队列
    17. @Bean("bootQueue")
    18. public Queue bootQueue(){
    19. return QueueBuilder.durable(QUEUE_NAME).build();
    20. }
    21. //队列和交换机的关系 Binding
    22. /**
    23. * 1 知道那个队列
    24. * 2 知道那个交换机
    25. * 3 routingKey
    26. */
    27. @Bean
    28. public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){
    29. return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    30. }
    31. }

    搭建消费者工程

    创建工程

    生产端

    1. 创建生产者SpringBoot工程

    2. 引入start,依赖坐标

    org.springframework.boot

    spring-boot-starter-amqp

    编写yml配置,基本信息配置
    定义交换机,队列以及绑定关系的配置类
    注入RabbitTemplate,调用方法,完成消息发送

    添加依赖

    修改pom.xml文件内容为如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0</modelVersion>
    6. <parent>
    7. <groupId>org.springframework.boot</groupId>
    8. <artifactId>spring-boot-starter-parent</artifactId>
    9. <version>2.1.4.RELEASE</version>
    10. </parent>
    11. <groupId>com.itheima</groupId>
    12. <artifactId>springboot-rabbitmq-consumer</artifactId>
    13. <version>1.0-SNAPSHOT</version>
    14. <dependencies>
    15. <dependency>
    16. <groupId>org.springframework.boot</groupId>
    17. <artifactId>spring-boot-starter-amqp</artifactId>
    18. </dependency>
    19. </dependencies>
    20. </project>

    启动类

    1. package com.itheima.rabbitmq;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class ConsumerApplication {
    6. public static void main(String[] args) {
    7. SpringApplication.run(ConsumerApplication.class);
    8. }
    9. }

    配置RabbitMQ

    创建application.yml,内容如下:

    spring:
    rabbitmq:
    host: localhost
    port: 5672
    virtual-host: /itcast
    username: heima
    password: heima

    消息监听处理类

    编写消息监听器com.itheima.rabbitmq.listener.MyListener

    1. package com.itheima.rabbitmq.listener;
    2. import org.springframework.amqp.rabbit.annotation.RabbitListener;
    3. import org.springframework.stereotype.Component;
    4. @Component
    5. public class MyListener {
    6. /**
    7. * 监听某个队列的消息
    8. * @param message 接收到的消息
    9. */
    10. @RabbitListener(queues = "item_queue")
    11. public void myListener1(String message){
    12. System.out.println("消费者接收到的消息为:" + message);
    13. }
    14. }

    测试

    在生产者工程springboot-rabbitmq-producer中创建测试类,发送消息:

    1. package com.itheima.rabbitmq;
    2. import com.itheima.rabbitmq.config.RabbitMQConfig;
    3. import org.junit.Test;
    4. import org.junit.runner.RunWith;
    5. import org.springframework.amqp.rabbit.core.RabbitTemplate;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.boot.test.context.SpringBootTest;
    8. import org.springframework.test.context.junit4.SpringRunner;
    9. @RunWith(SpringRunner.class)
    10. @SpringBootTest
    11. public class RabbitMQTest {
    12. @Autowired
    13. private RabbitTemplate rabbitTemplate;
    14. @Test
    15. public void test(){
    16. rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.insert", "商品新增,routing key 为item.insert");
    17. rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.update", "商品修改,routing key 为item.update");
    18. rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.delete", "商品删除,routing key 为item.delete");
    19. }
    20. }

    先运行上述测试程序(交换机和队列才能先被声明和绑定),然后启动消费者;在消费者工程springboot-rabbitmq-consumer中控制台查看是否接收到对应消息。

    SpringBoot提供了快速整合RabbitMQ的方式

    基本信息再yml中配置,队列交互机以及绑定关系在配置类中使用Bean的方式配置

    生产端直接注入RabbitTemplate完成消息发送

    消费端直接使用@RabbitListener完成消息接收

    以上就是SpringBoot整合消息队列RabbitMQ的方法是什么的详细内容,更多关于SpringBoot整合消息队列RabbitMQ的方法是什么的资料请关注九品源码其它相关文章!