SpringBoot整合RabbitMQ

2024-04-30 09:26:00 浏览数 (1)

一、项目创建

SpringBoot整合RabbitMQ时,提供了工具类RabbitTemplate发送消息,编写生产者时只需要注入RabbitTemplate即可发送消息。

思路在于生产者一个项目,消费者一个项目。

在Spring Boot中整合RabbitMQ非常简单,因为Spring Boot提供了自动配置的支持。以下是一个简单的步骤指南,说明如何在Spring Boot项目中整合RabbitMQ:

二、创建交换机和队列

首先,创建完Spring Boot项目之后,引进RabbitMQ依赖,如下:

代码语言:xml复制
<!-- 添加RabbitMQ依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

接下来编写配置文件:

代码语言:yml复制
spring:
  rabbitmq:
    host: 192.168.66.100
    port: 5672
    username: guest
    password: guest
    virtual-host: /

然后在配置类编写创建交换机,创建队列,绑定交换机和队列这些,具体如下代码:

代码语言:javascript复制
@Configuration
public class RabbitMQConfig {

    private final String EXCHANGE_NAME = "boot_topic_exchange";
    private final String QUEUE_NAME = "boot_queue";

    // 创建交换机
    @Bean(EXCHANGE_NAME)
    public Exchange getExchange(){
        return ExchangeBuilder
                // 交换机类型
                .topicExchange(EXCHANGE_NAME)
                // 是否持久化
                .durable(true)
                .build();

    }

    // 创建队列
    @Bean(QUEUE_NAME)
    public Queue getMessageQueue(){
        return new Queue(QUEUE_NAME);
    }

    // 交换机绑定队列
    @Bean
    public Binding bindingMessageQueue(@Qualifier(EXCHANGE_NAME) Exchange exchange,
                                       @Qualifier(QUEUE_NAME) Queue queue){
        return BindingBuilder
                .bind(queue)
                .to(exchange)
                .with("#.message.#")
                .noargs();

    }
}

三、编写生产者

最后,编写在测试编写测试方法,向生产者发送消息:代码如下:

代码语言:java复制
@Test
public void testSendMessage(){
    /**
     * 发送消息
     * 参数1:交换机
     * 参数2:路由key
     * 参数3:要发送消息
     */
    rabbitTemplate.convertAndSend("boot_topic_exchange","message","他居然主动给我发消息咯?!");
}

执行之后查看管控台:

OK,已经可以确定消息已经发到RabbitMQ中了。

四、编写消费者

消费者只需写一个监听方法即可:代码如下:

代码语言:javascript复制
@Component
public class Consumer {
    // 监听队列
    @RabbitListener(queues = "boot_queue")
    public void listen_message(String message){
        System.out.println("发送消息: " message);
    }
}

启动项目,看一下是否成功获取消息:

OK,这里确实也是可以成功获取到RabbitMQ的消息了.

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

0 人点赞