05、RabbitMQ基础:SpringBoot整合RabbitMQ

有道无术,术尚可求,有术无道,止于术。

文章目录

    • 前言
    1. 环境搭建
    1. 基本信息配置
    1. 创建交换机和队列
    1. 消费者
    1. 生产者
  • 测试

前言

Spring BootRabbitMQ也提供了自动配置和启动器。

中文文档地址

1. 环境搭建

创建一个 Spring Boot基础工程,引入依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

该依赖中,引入了spring-rabbit
*

2. 基本信息配置

RabbitProperties配置类中,可以看到很多相关配置:
*
最重要当然是配置MQ 的地址、端口、用户名、密码,可以使用两种方式配置:

spring:
  rabbitmq:
    addresses: amqp://guest:guest@localhost
    port: 5672
# 或者
spring:
  rabbitmq:
    username: guest
    password: guest
    host: localhost
    port: 5672

虚拟机配置,虚拟机以/开头,默认为/

spring:
  rabbitmq:
    virtual-host: /

3. 创建交换机和队列

使用ExchangeBuilder 创建交换机,可以创建四种类型的交换机,如下图:
*
按照相似的方式创建队列、绑定。

@Configuration
public class RabbitMqConfig {
   
     

    /**
     * 使用 ExchangeBuilder 创建交换机
     *
     */
    @Bean("bootExchange")
    public Exchange bootExchange() {
   
     
        return ExchangeBuilder.directExchange("bootExchange").durable(true).build();
    }

    /**
     * 创建队列
     */
    @Bean("bootQueue")
    public Queue bootQueue() {
   
     
        return QueueBuilder.durable("bootQueue").build();
    }

    /**
     * 创建队列和交换机的绑定关系
     */
    @Bean("bootBinding")
    public Binding bootBinding(@Qualifier("bootQueue") Queue bootQueue, @Qualifier("bootExchange") Exchange bootExchange) {
   
     
        return BindingBuilder.bind(bootQueue).to(bootExchange).with("boot.key").and(null);
    }
}

启动项目,进入控制台,可以看到相关信息:
*

4. 消费者

使用@RabbitListener注解标记在方法上,并指定队列名,方法入参Message

@Component
public class RabbitConsumer {
   
     

    @RabbitListener(queues = {
   
     "bootQueue"})
    public void rabbitListener(Message message) {
   
     
        System.out.println("收到消息===" + message);
    }
}

Message对象是Sring集成RabbirMQ提供的消息装载体,主要包含了消息二进制数据body和消息属性MessageProperties
*

5. 生产者

创建一个生产者,使用RabbitTemplate直接将消息发送到指定的交换机,并指定其路由KEY

@SpringBootTest
public class MqTest {
   
     

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testRabbitPub() {
   
     
        rabbitTemplate.convertAndSend("bootExchange","boot.key","HELLO SPRING BOOT");
    }
}

测试

启动项目,可以看到打印了连接日志:
*
发送消息,并成功接收到消息,消息包含了消息本身内容和消息属性
*

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: