首页 > 系统相关 >Spring Boot 集成 RabbitMQ 完整教程(含 Windows 安装 RabbitMQ)

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

时间:2024-10-25 11:17:06浏览次数:11  
标签:Windows Spring RabbitMQ rabbitmq org message 安装 public

在现代分布式系统中,消息队列是一种非常重要的组件,用于解耦应用程序的各个部分、异步处理任务、提高系统的可扩展性和容错性。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 install
    rabbitmq-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.propertiesapplication.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: 5672
    username: guest
    password: guest

2.3 创建配置类

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

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {

    public static final String QUEUE_NAME = "test_queue";
    public static final String EXCHANGE_NAME = "test_exchange";
    public static final String ROUTING_KEY = "test_routing_key";

    @Bean
    public Queue queue() {
        return new Queue(QUEUE_NAME, true);  // 队列持久化
    }

    @Bean
    public DirectExchange exchange() {
        return new DirectExchange(EXCHANGE_NAME, true, false);
    }

    @Bean
    public Binding binding(Queue queue, DirectExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
    }
}

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


2.4 创建消息生产者(Producer)

消息生产者负责将消息发送到 RabbitMQ。通过 RabbitTemplate 实现消息的发送操作:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RabbitMQSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(String message) {
        System.out.println("Sending message: " + message);
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, RabbitMQConfig.ROUTING_KEY, message);
    }
}

2.5 创建消息消费者(Consumer)

消息消费者负责接收队列中的消息。通过 @RabbitListener 监听指定队列中的消息。

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
public class RabbitMQReceiver {

    @RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

2.6 创建控制器发送消息

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private RabbitMQSender rabbitMQSender;

    @GetMapping("/send")
    public String sendMessage(@RequestParam String message) {
        rabbitMQSender.send(message);
        return "Message sent: " + message;
    }
}

访问 http://localhost:8080/send?message=HelloRabbitMQ,可以通过浏览器发送消息。


3. 高级配置与补充

3.1 消息确认机制

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

@RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
public void receiveMessage(Message message, Channel channel) throws IOException {
    try {
        // 处理消息
        System.out.println("Received message: " + new String(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 的集成!

标签:Windows,Spring,RabbitMQ,rabbitmq,org,message,安装,public
From: https://blog.csdn.net/qq_56694800/article/details/143210203

相关文章

  • 在windows中使用sphinx创建生成html
    在windows中使用sphinx创建生成html前提条件:已安装python(我安装的版本是3.12.6)安装好sphinx。如果不记得装没装的话可以piplist查一下安装时可以用pipinstall进行安装......
  • 基于SpringBoot+Vue旅行推广网站的设计与实现
    博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大数据等设计与开发。感兴趣的可......
  • 中小企业设备管理:Spring Boot实现指南
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。开发合适的中小企业设备管理系统,可以方便管理人......
  • Spring Boot框架下中小企业设备管理系统开发
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。开发合适的中小企业设备管理系统,可以方便管理人......
  • 基于SpringBoot + Vue的高校大学生竞赛项目管理系统(角色:学生、评委、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot + Vue的《计算机基础》网上考试系统
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot的时装购物系统【源码】+【论文】
    时装购物系统是一个基于Springboot框架开发的Web应用系统,数据库使用的是MySQL。该系统充分考虑了代码的可读性、实用性、扩展性和通用性,页面设计简洁、操作方便,易于后期维护。系统分为管理员和用户两大角色,前台页面提供了商品信息、订单管理、购物车和客服等功能,旨在为用户提供......
  • springboot工程,在pom.xml文件中,排除了打包application.yml文件后,运行项目报错的问题
    1、排除掉application.yml文件(maven编译是没有问题的) 2、但是在idea中运行项目,会报 Errorcreatingbeanwithname'loginInterceptor':Unsatisfieddependencyexpressedthroughfield'jwtUtil';nestedexceptionisorg.springframework.beans.factory.BeanCreatio......
  • windows中mysql遇到的一些小问题
    windows中mysql的一些常见问题初始化时指定defaults-files配置文件初始化失败#windows中使用cmd操作mysql时注意cmd命令自带的编码格式是gbk编码,所以在cmd下操作mysql命令可能回出现问题,例如:初始化mysqld--initialize--defaults-file="配置文件"时遇到系统库初始化失败的情......
  • 基于SpringBoot+Vue的前后端分离的人工智能模型销售平台
    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......