Spring Boot 集成 RabbitMQ(一)

这篇具有很好参考价值的文章主要介绍了Spring Boot 集成 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>

     3.接下来,配置 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。

接下来,在项目中创建一个消息发送者(Producer):

java

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

@Component
public class Producer {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMessage(String exchange, String routingKey, Object message){
        rabbitTemplate.convertAndSend(exchange, routingKey, message);
    }
}

还需要创建一个消息接收者(Consumer):

java

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

@Component
public class Consumer {

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

假设你已经接收到了航班动态的消息,这些消息将会被发送到RabbitMQ,然后由你的Spring Boot应用程序进行消费。

首先,确定你的RabbitMQ配置。在application.properties文件中:

properties

spring.rabbitmq.host=your_host
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

设计一个类来接收航班的动态信息:

java

public class FlightStatus {
    private String flightNumber; // 航班号
    private String status; // 航班状态
    // getters and setters
}

接收和处理消息的类可能如下:

java

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

@Component
public class FlightStatusConsumer {

    @RabbitListener(queues = "${your_queue}")
    public void receiveFlightStatusUpdate(FlightStatus flightStatus) {
        // 处理航班状态更新
        System.out.println("Received flight status update: " + flightStatus);
    }
}

在上面的代码中,receiveFlightStatusUpdate方法会监听你指定的队列,并消费消息。当一个新的FlightStatus消息到达时,此方法会被调用,并输出接收到的航班状态更新。文章来源地址https://www.toymoban.com/news/detail-857757.html

到了这里,关于Spring Boot 集成 RabbitMQ(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二十章 : Spring Boot 集成RabbitMQ(四)

    第二十章 : Spring Boot 集成RabbitMQ(四) 前言 本章知识点:死信队列的定义、场景、作用以及原理、TTL方法的使用以及演示代码示例。 死信队列 定义:什么是死信队列? 在RabbitMQ中,并没有提供真正意义上的延迟队列,但是RabbitMQ可以设置队列、消息的过期时间,当队列或者

    2024年02月04日
    浏览(35)
  • 第二十一章 : Spring Boot 集成RabbitMQ(五)

    第二十一章 : Spring Boot 集成RabbitMQ(五) 前言 本章知识点: 如何保证消息100%可靠性发送的技术解决方案。 一、 应用场景 在使用消息队列时,因为生产者和消费者不直接交互,所以面临下面几个问题: 1)要把消息添加到队列中,怎么保证消息成功添加? 2)如何保证消息

    2024年02月03日
    浏览(41)
  • Java Spring Boot 开发框架

    Spring Boot是一种基于Java编程语言的开发框架,它的目标是简化Java应用程序的开发过程。Spring Boot提供了一种快速、易于使用的方式来创建独立的、生产级别的Java应用程序。本文将介绍Spring Boot的特性、优势以及如何使用它来开发高效、可靠的应用程序。 Spring Boot是由Pivotal团队

    2024年02月08日
    浏览(49)
  • 解决`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的问题

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月11日
    浏览(45)
  • [Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

     🍳作者:天海奈奈 💭眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂 o f f e r ,程序员的必备刷题平台 − − 牛客网  👉🏻点击开始刷题之旅 目录 什么是RabbitMQ   消息队列:接受并转发消息,类似于快递公司 消息队列的优点 消息队列的特性 RabbitMQ特点 RabbitMQ核

    2024年01月24日
    浏览(82)
  • Java-Spring Boot 集成海康威视明眸门禁 布防|报警|回调|获取事件|查询用户信息

    最近做门禁的集成,突然感觉海康这个东西挺有意思的,于是记录一下。 好了废话不多说,开始上环境、代码 本集成是海康-设备网络集成(以人为中心) 环境:windows 开发工具:IDEA JDK版本:JDK-11.0.12 海康jar包:怎么引入都行(本地引入、maven上传到私服)           

    2024年04月15日
    浏览(123)
  • 【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

    Spring Boot 项目开发结束后的工作便是运维,简单来说需要配置 Web 运行参数和项目部署两大工作,本文将尽可能详细地给大家讲全! 目录 1 定制 Web 容器运行参数 1.1 运行参数介绍 1.2 项目搭建 ① 通过 IDEA Spring Initializr 创建项目 ② 添加 Spring Web 等依赖 ③ 编写 controller 层的

    2023年04月23日
    浏览(56)
  • Java 中 Spring Boot 框架下的 Email 开发

    hutool工具包: 这个类更贴近我们的常见信息 ,用这个去构造邮箱框架的指定邮件类的构造。 邮箱格式检查: 以 yeah.net 邮箱为例(其他的邮箱也会有,举一反三) 根据指导即可,获得授权密码! 以smtp为例: 这个就是host,可以查一下,port是465(其他的服务器 port是啥,一查

    2024年04月08日
    浏览(48)
  • “深入解析Spring Boot:快速开发Java应用的利器“

    标题:深入解析Spring Boot:快速开发Java应用的利器 摘要:Spring Boot是一个开发Java应用的利器,它简化了Spring应用的配置和部署过程,提供了快速构建和开发Java应用的能力。本文将深入解析Spring Boot的核心特性和优势,并通过示例代码来展示如何使用Spring Boot进行快速应用开发

    2024年02月16日
    浏览(48)
  • 【Spring Boot】Spring Boot 集成 RocketMQ 实现简单的消息发送和消费

    本文主要有以下内容: 简单消息的发送 顺序消息的发送 RocketMQTemplate的API介绍 环境搭建: RocketMQ的安装教程:在官网上下载bin文件,解压到本地,并配置环境变量,如下图所示: 在 Spring boot 项目中引入 RocketMQ 依赖: 在application.yml增加相关配置: 在 Spring Boot 中使用RocketM

    2024年02月14日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包