首页 > 其他分享 >Spring Boot 集成 RabbitMQ(一)

Spring Boot 集成 RabbitMQ(一)

时间:2024-04-06 12:29:37浏览次数:23  
标签:队列 Spring Boot rabbitmq 消息 spring RabbitMQ

1、RabbitMQ 和 SpringBoot 的基础概念

RabbitMQ 是一个开源的 MQ (Message Queue,消息队列) 客户端服务器实现,遵循 AMQP(Advanced Message Queuing Protocol)协议。它允许应用发送消息并不直接传递到目标对象,而是通过交换器,队列,绑定的方式进行处理和转发,从而实现应用的解耦,异步并且能够确保可靠性。

Spring Boot 是由 Pivotal 团队提供的全新框架,用于简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义模板化的配置,简化了开发流程。

2、为何需要 SpringBoot 和 RabbitMQ,它们能带来什么好处 ?

  引入 Spring Boot 和 RabbitMQ 的优势主要体现在以下方面:

  • 解耦:不同的服务之间通过消息队列进行通信,降低了系统的耦合度。
  • 异步:消息生产者向队列中发送消息后,不需要同步等待消费者处理完成。
  • 增强可靠性:通过消息确认机制确保消息的成功投递。
  • 削峰填谷:在高并发情况下,消息生产者的生产能力可能远大于消费者的处理能力,消息队列可以作为一个缓冲,存储这些消息等待消费者消费。

3、SpringBoot 和 RabbitMQ 的工作原理介绍

 Spring Boot 通过自动配置、独立运行的方式,极大的简化了 Spring 应用的开发。在 Spring Boot 的核心设计中,存在四个重要的原则:

  • 开箱即用:Spring Boot 微服务的 jar 包可以直接运行
  • 提供种类丰富的“starter”依赖,简化 Maven 配置
  • 无需任何 XML 配置
  • 提供一系列大型项目中常见的非功能性特性,如安全、指标收集

RabbitMQ 则是典型的生产者-消费者模型,其工作原理包括三个重要的阶段:

  • 生产者生成消息:生产者产生数据后作为消息发送到 RabbitMQ。
  • 消息存储:RabbitMQ 将来自生产者的消息暂存在队列中,等待消费者来接收。
  • 消费者接收消息:一个或多个消费者连接到消息队列中,等待消息到来。当消息到达时,消费者从队列中获取消息并进行处理。

使用 Spring Boot 集成 RabbitMQ,我们可以轻易地创建出生产者和消费者,通过注解和配置的方式使用 RabbitMQ 的强大功能。

在 SpringBoot 中集成 RabbitMQ,您需要遵循以下步骤:

  1. 首先,您需要在您的计算机上安装 RabbitMQ。这就像在您的系统中安装任何软件一样。您可以从 RabbitMQ 官方网站 下载安装包进行安装。

  2. 然后,在 SpringBoot 项目中添加 RabbitMQ 的依赖。假设您正在使用 Maven,那么您需要在 pom.xml 文件中添加以下依赖:

xml

<dependencies>
    <!-- 添加 Spring Boot 的 RabbitMQ starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
</dependencies>
  1. 接下来,配置 RabbitMQ。您需要在 application.properties 或者 application.yml 文件中添加 RabbitMQ 的相关配置,以下是一个样例配置:
# RabbitMQ 的主机名或 IP 地址
spring.rabbitmq.host=localhost

# RabbitMQ的端口号,默认为5672
spring.rabbitmq.port=5672

# RabbitMQ 的用户名
spring.rabbitmq.username=guest

# RabbitMQ 的密码
spring.rabbitmq.password=guest

# RabbitMQ 的 virtual host,用于隔离连接、交换器和队列, 默认为"/"
spring.rabbitmq.virtual-host=/

以上即是 SpringBoot 集成 RabbitMQ 的基本步骤。

需要注意的是,以下为您可能需要的一些额外配置选项:

  • spring.rabbitmq.publisher-confirm-type:消息发送到交换器Exchange后触发回调的类型,可以设置为:none、simple、correlated。
  • spring.rabbitmq.publisher-returns:当消息无法路由到队列时,是否返回给生产者,它需要和spring.rabbitmq.template.mandatory 一起使用。
  • spring.rabbitmq.template.mandatory:当消息无法路由到队列从而返回给生产者时,需要设置 mandatory 为 true,否则不会返回。
  • spring.rabbitmq.listener.simple.acknowledge-mode:消费者的确认模式,默认为自动确认,有三种:NONE、MANUAL、AUTO。

标签:队列,Spring,Boot,rabbitmq,消息,spring,RabbitMQ
From: https://blog.csdn.net/pengyi123/article/details/137359883

相关文章

  • springboot校园志愿者管理系统
    随着信息化时代的到来,管理系统都趋向于智能化、系统化,校园志愿者管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而校园志愿者管理系统能很好地解决这一问题,轻松应对校园志愿者平时的工作,既能提高人力物力......
  • 游戏攻略|基于Springboot和vue的游戏分享平台系统设计与实现(源码+数据库+文档)
    游戏攻略分享平台目录基于Springboot的在线考试管理系统设计与实现一、前言二、系统设计三、系统功能设计 1、前台:2、后台5.2.1管理员功能模块四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道......
  • Ueditor富文本回显word文档(doc和docx格式都支持)进行二次编辑,springboot后端
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档vue+ueditor+springboot,实现word文档上传编辑前言`前端导入word文档(doc和docx格式都支持),Ueditor富文本回显进行二次编辑,目前ueditor项目archived了,实现两种格式的相关材料相对稀缺。解决思路:1.上传word......
  • 基于springboot的大学生综合成绩管理系统3(含源码+sql+视频导入教程+文档+PPT)
    ......
  • Spring声明式事务(Spring学习笔记十五)
            不推荐使用编程式事务 在Spring-dao.xml中配置声明式事务<!--配置声明式事务--><!--获得transactionManager然后把他丢给他的构造器constructor-arg--><beanid="transactionManager"class="org.springframework.jdbc.datasource.D......
  • SSM(Spring+SpringMVC+MyBatis)常用注解大全
    提示使用浏览器查找系统也快速查找,可避免漏看和疲劳Win:Ctrl+FMac:Command+F@Bean功能:用于在配置类中声明一个bean。用法:@ConfigurationpublicclassAppConfig{@BeanpublicMyServicemyService(){returnnewMyServiceImpl();}}@Com......
  • 基于Springboot的美发管理系统(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的美发管理系统(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。界......
  • 基于Spring Boot的网上书城系统(带文档)
     主要功能本次设计任务是要设计一个网上书城管理系统,通过这个系统能够满足网上书城的管理及用户的图书信息管理及购物功能。系统的主要功能包括:首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信息管理、我的收藏管理、系统管理、订单管理等功能。管理员可以根......
  • Springboot项目启动异常排查
    一、问题由来启动时报错信息如下:PropertyDetectorcustomBeannotfoundwithname'encryptablePropertyDetector'本地测试时,发现同样的问题。  二、问题分析把该问题对应的英文放在白发翻译里面,翻译结果如下,未找到名为“encryptablePropertyDetector”的属性检测......
  • Spring Boot 日志
    1.日志概述1.1什么是日志我们刚开始学习编程,写一些编程题时,我们使用print输出一些数据测试自己代码,这个输出的内容就可以称为日志。日志可以用来发现和定位问题,或者根据日志来分析程序的运行过程,在Spring的学习中,也经常通过控制台打印的日志来分析和定位问题。随着项目的复......