0


Spring Boot 集成 RabbitMQ 完整教程(含 Windows 安装 RabbitMQ)

在现代分布式系统中,消息队列是一种非常重要的组件,用于解耦应用程序的各个部分、异步处理任务、提高系统的可扩展性和容错性。RabbitMQ 是一种流行的消息队列中间件,支持多种消息协议,其中 AMQP(Advanced Message Queuing Protocol)是其默认支持的协议。

本文将详细介绍如何在 Windows 上安装 RabbitMQ,并在 Spring Boot 项目中集成 RabbitMQ,搭建生产者与消费者的消息队列模型。同时,还会讨论一些高级配置选项,帮助你在生产环境中更灵活地使用 RabbitMQ。

目录


1. Windows 上安装 RabbitMQ

在 Windows 上安装 RabbitMQ 主要分为两步:安装 Erlang 和安装 RabbitMQ。

1.1 安装 Erlang

RabbitMQ 依赖 Erlang 环境,因此在安装 RabbitMQ 之前需要先安装 Erlang。

  1. 访问 Erlang 官网:https://www.erlang.org/downloads,下载适合 Windows 的 Erlang 安装包(一般选择最新版本)。
  2. 安装 Erlang,过程中可以保持默认设置。
  3. 安装完成后,确认环境变量中 ERLANG_HOME 路径正确配置。- 打开命令行,输入 erl,如果成功进入 Erlang shell 环境,则说明安装成功。
1.2 安装 RabbitMQ
  1. 访问 RabbitMQ 官网:https://www.rabbitmq.com/install-windows.html,下载 RabbitMQ 安装包。
  2. 安装 RabbitMQ,可以保持默认安装路径。
  3. 安装完成后,在安装目录下的 sbin 文件夹内找到 rabbitmq-service.bat,使用管理员权限打开命令行并执行以下命令,安装 RabbitMQ 服务:rabbitmq-service installrabbitmq-service start如果安装成功,RabbitMQ 服务会成功启动。
1.3 启用 RabbitMQ 管理插件

RabbitMQ 默认带有一个管理控制台插件,可以通过浏览器访问,方便我们查看队列、交换机等信息。要启用该插件,可以执行以下命令:

rabbitmq-plugins enable rabbitmq_management

启用成功后,你可以在浏览器中访问

http://localhost:15672

,默认用户名和密码均为

guest


2. Spring Boot 集成 RabbitMQ

接下来,我们将在 Spring Boot 项目中集成 RabbitMQ,以下是详细的步骤。

2.1 添加依赖

pom.xml

中添加

spring-boot-starter-amqp

依赖:

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

这个依赖引入了 Spring AMQP,简化了与 RabbitMQ 的集成。


2.2 配置 RabbitMQ

在 Spring Boot 的配置文件

application.properties

application.yml

中,配置 RabbitMQ 的连接信息。

使用
application.properties

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
使用
application.yml

spring:rabbitmq:host: localhost
    port:5672username: guest
    password: guest

2.3 创建配置类

通过配置类定义队列(Queue)、交换机(Exchange)以及它们的绑定关系。

importorg.springframework.amqp.core.*;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRabbitMQConfig{publicstaticfinalString QUEUE_NAME ="test_queue";publicstaticfinalString EXCHANGE_NAME ="test_exchange";publicstaticfinalString ROUTING_KEY ="test_routing_key";@BeanpublicQueuequeue(){returnnewQueue(QUEUE_NAME,true);// 队列持久化}@BeanpublicDirectExchangeexchange(){returnnewDirectExchange(EXCHANGE_NAME,true,false);}@BeanpublicBindingbinding(Queue queue,DirectExchange exchange){returnBindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);}}

在这里,我们定义了一个持久化队列、一个直接交换机,并将它们通过特定的路由键绑定在一起。你可以根据需求定义不同类型的交换机(如

FanoutExchange

TopicExchange

)。


2.4 创建消息生产者(Producer)

消息生产者负责将消息发送到 RabbitMQ。通过

RabbitTemplate

实现消息的发送操作:

importorg.springframework.amqp.rabbit.core.RabbitTemplate;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassRabbitMQSender{@AutowiredprivateRabbitTemplate rabbitTemplate;publicvoidsend(String message){System.out.println("Sending message: "+ message);
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,RabbitMQConfig.ROUTING_KEY, message);}}

2.5 创建消息消费者(Consumer)

消息消费者负责接收队列中的消息。通过

@RabbitListener

监听指定队列中的消息。

importorg.springframework.amqp.rabbit.annotation.RabbitListener;importorg.springframework.stereotype.Service;@ServicepublicclassRabbitMQReceiver{@RabbitListener(queues =RabbitMQConfig.QUEUE_NAME)publicvoidreceiveMessage(String message){System.out.println("Received message: "+ message);}}

2.6 创建控制器发送消息

为了测试生产者的功能,可以创建一个控制器,通过 HTTP 请求触发消息的发送操作:

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassTestController{@AutowiredprivateRabbitMQSender rabbitMQSender;@GetMapping("/send")publicStringsendMessage(@RequestParamString message){
        rabbitMQSender.send(message);return"Message sent: "+ message;}}

访问

http://localhost:8080/send?message=HelloRabbitMQ

,可以通过浏览器发送消息。


3. 高级配置与补充

3.1 消息确认机制

RabbitMQ 提供自动和手动确认机制,默认情况下,消息自动确认。如果需要手动确认,可以在消费端配置:

@RabbitListener(queues =RabbitMQConfig.QUEUE_NAME)publicvoidreceiveMessage(Message message,Channel channel)throwsIOException{try{// 处理消息System.out.println("Received message: "+newString(message.getBody()));// 手动确认消息
        channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);}catch(Exception e){// 处理失败,重新放回队列
        channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);}}
3.2 连接池与并发控制

可以通过配置连接池与并发处理,提升性能:

spring.rabbitmq.listener.simple.concurrency=5
spring.rabbitmq.listener.simple.max-concurrency=10
spring.rabbitmq.listener.simple.prefetch=1

总结

通过本文,你学习了如何在 Windows 上安装 RabbitMQ,并在 Spring Boot 项目中集成 RabbitMQ,创建生产者与消费者模型。RabbitMQ 的消息队列模式帮助我们实现了系统的解耦和异步任务处理。

主要步骤包括:

  1. 安装 RabbitMQ 和 Erlang。
  2. Spring Boot 中的基础配置和依赖。
  3. 创建队列、交换机和绑定关系。
  4. 创建生产者和消费者,实现消息发送与接收。
  5. 使用控制器测试消息发送。

高级配置部分还介绍了手动确认、连接池等功能,帮助你在实际项目中更灵活地应用 RabbitMQ。希望这篇教程能帮助你快速上手 RabbitMQ 和 Spring Boot 的集成!


本文转载自: https://blog.csdn.net/qq_56694800/article/details/143210203
版权归原作者 ( •̀∀•́ )920 所有, 如有侵权,请联系我们删除。

“Spring Boot 集成 RabbitMQ 完整教程(含 Windows 安装 RabbitMQ)”的评论:

还没有评论