Spring Boot 中的 RabbitMQ 的消息接收配置是什么,原理,如何使用

news2024/12/26 12:59:43

Spring Boot 中的 RabbitMQ 的消息接收配置是什么,原理,如何使用

RabbitMQ 是一个流行的消息队列系统,它可以用于在应用程序之间传递消息。Spring Boot 提供了对 RabbitMQ 的支持,我们可以使用 Spring Boot 中的 RabbitMQ 消息接收配置来接收 RabbitMQ 中的消息。本文将介绍 RabbitMQ 的消息接收配置的原理和如何在 Spring Boot 中使用它。

在这里插入图片描述

RabbitMQ 的消息接收配置原理

在 RabbitMQ 中,消息消费者需要创建一个连接和一个信道,并订阅一个队列来接收消息。RabbitMQ 的 Java 客户端库提供了一种面向对象的方式来实现这些操作。在 Spring Boot 中,我们可以使用 RabbitListener 和 MessageListenerAdapter 来简化消费者的实现。

RabbitListener 是 Spring AMQP 提供的注解,它可以将一个 Java 方法标记为 RabbitMQ 消息监听器。当 RabbitMQ 中有消息到达时,该方法将被调用。

MessageListenerAdapter 是 Spring AMQP 提供的适配器,它可以将一个普通的 Java 方法转换为 RabbitMQ 消息监听器。它可以将收到的消息转换为 Java 对象,然后调用指定的方法进行处理。

如何使用 RabbitMQ 的消息接收配置

在 Spring Boot 中使用 RabbitMQ 的消息接收配置很简单,我们只需要定义一个消息监听器类,并添加 @RabbitListener 注解即可。下面是一个简单的示例:

@Component
public class MyConsumer {
    @RabbitListener(queues = "myQueue")
    public void onMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

在这个示例中,我们定义了一个名为 MyConsumer 的 Bean,并使用 @RabbitListener 注解来标记一个接收消息的方法。当 RabbitMQ 中有消息到达时,该方法将被调用,并输出消息的内容。

除了 @RabbitListener 注解之外,我们还可以使用 MessageListenerAdapter 来定义消息监听器。下面是一个示例:

@Configuration
public class RabbitMQConfig {
    @Bean
    public MessageListenerAdapter messageListenerAdapter() {
        MessageListenerAdapter adapter = new MessageListenerAdapter();
        adapter.setDelegate(new MyConsumer());
        adapter.setDefaultListenerMethod("onMessage");
        adapter.setMessageConverter(new Jackson2JsonMessageConverter());
        return adapter;
    }

    @Bean
    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory, MessageListenerAdapter messageListenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
        container.setQueues(new Queue("myQueue"));
        container.setMessageListener(messageListenerAdapter);
        return container;
    }
}

在这个示例中,我们定义了一个名为 RabbitMQConfig 的配置类,并定义了一个 MessageListenerAdapter 和一个 SimpleMessageListenerContainer。在 MessageListenerAdapter 中,我们指定了一个名为 MyConsumer 的 Bean 作为委托,并指定了默认的监听方法为 onMessage。我们还将消息转换器设置为 Jackson2JsonMessageConverter,以便将消息转换为 JSON 格式。在 SimpleMessageListenerContainer 中,我们指定了一个名为 myQueue 的队列,并将 MessageListenerAdapter 注入到容器中。

除了上述方法之外,Spring Boot 还提供了其他的一些配置选项,如消息确认模式、消息并发处理等。具体的配置可以参考官方文档。

RabbitMQ 的消息接收配置的注意事项

在使用 RabbitMQ 的消息接收配置时,我们需要注意以下几点:

  • RabbitListener 和 MessageListenerAdapter 只支持处理单个消息,如果需要处理多个消息,需要在方法内部进行循环处理。
  • RabbitListener 和 MessageListenerAdapter 只支持处理字符串、字节数组和 Java 对象格式的消息,如果需要处理其他格式的消息,需要自行实现消息转换器。
  • 可以使用 @RabbitListener 注解的 queues 属性来指定队列名,也可以使用 @QueueBinding 注解来指定队列和交换机的绑定关系。

总结

RabbitMQ 是一个流行的消息队列系统,Spring Boot 提供了对 RabbitMQ 的支持,我们可以使用 RabbitMQ 的消息接收配置来接收 RabbitMQ 中的消息。在使用 RabbitMQ 的消息接收配置时,我们可以使用 @RabbitListener 注解或 MessageListenerAdapter 来定义消息监听器,并指定需要监听的队列。在监听到消息后,我们可以在方法内部进行处理。在使用 RabbitMQ 的消息接收配置时,我们需要注意一些注意事项,如处理多个消息、处理不同格式的消息等。对于更加复杂的场景,我们还可以使用更加灵活的配置来满足需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0到1精通自动化测试,pytest自动化测试框架,allure标记用例级别severity(二十一)

目录 一、前言 二、用例等级 三、pytest用例 四、统计缺陷 五、allure命令行参数allure-severities 一、前言 我们在做功能测试的时候,执行完一轮测试用例,输出测试报告的时候,会有统计缺陷的数量和等级 在做自动化测试的过程中&#…

SpringBoot3【② Web开发】

SpringBoot3-Web开发 SpringBoot的Web开发能力,由SpringMVC提供。 0. WebMvcAutoConfiguration原理 1. 生效条件 AutoConfiguration(after { DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.clas…

12-C++算法笔记-递推

📖 引入 让我们从一个有趣的例子开始,棋盘放米的问题。假设有一个 8 8 8\times8 88 的棋盘,皇帝想要奖赏一位大臣。大臣提出的要求是在棋盘上按如下规则领赏:第一个格子上放一粒米,随后的每个格子都放置前一个格子上…

IM即时通讯APP在聊天场景中的应用

即时通讯(IM)应用可以满足人们随时随地进行文字、语音、图片、视频等多媒体信息的传递需求,为个人和企业提供了高效、便捷的沟通方式。在企业中,IM即时通讯APP更是发挥着重要的作用,促进了协作和团队工作的效率提升。以…

jenkins邮箱设置报:501 mail from address must be same as authorization user

jenkins配置邮箱时遇到如下错误:501 mail from address must be same as authorization user 原因是管理员邮箱地址与发送邮箱地址不统一,配置管理员邮件地址:系统管理-系统配置-Jenkins Location,输入与发件人统一的地址即可

Airtest:Windows桌面应用自动化测试三【Airtest脚本的点击位置与点击偏移】

Airtest脚本的点击位置与点击偏移 1. 前言2. Airtest的点击位置3.Airtest的点击偏移图像点击偏移,常用于下述场景中:3.1、一个是,当我们的页面中,存在很多个相同的图标,我们想指定点击某个位置的图标,就有可…

台灯的功能作用有哪些?分享好用的台灯

照明对于我们来说是非常重要的,从远古时期的钻木取火到古代的蜡烛、油灯以及近代电灯,可以说人们在不断的创造着能够发亮的东西,而现在电灯的种类很多,包括壁灯、吊灯、台灯等,因为实际用到的环境不同起到的作用也不尽…

抖音矩阵号/抖音短视频SEO矩阵系统源码开发及开发者思路分享....

抖音矩阵号短视频系统,抖音矩阵号系统源码开发,思路分享,说一点开发者掏心窝子的话...... 一套优秀的短视频获客系统,支持短视频智能剪辑、短视频定时发布,短视频排名查询及优化,短视频智能客服等,那么短视…

C语言进阶---动态内存管理

1、为什么存在动态内存分配? 我们已经掌握的内存开辟方式有: int a 20; //在栈空间上开辟四个字节。 char arr[20]; //在栈空间上开辟10个字节的连续空间。但是上述的开辟空间的方式有两个特点: 开辟空间大小是固定的数组在申…

基于JSP+Servlet+Mysql客户管理系统

基于JSPServletMysql客户管理系统 一、系统介绍二、功能展示1.项目骨架2.登录界面3.个人信息修改4.数据分析5.市场管理6.线索管理7、联系人8、客户管理9、交易管理 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java web项目 项目名称:基…

【弱网】clumsy的filter语法设置

clumsy 官方说明 jagt WinDivert 的语法 https://github.com/basil00/Divert/wiki/WinDivert-Documentation#7-filter-languageDivert大神们的改版 clumsy-regoutbound 发送 inbound

CVPR2023 Openlanev2 挑战赛:第一名方案解读

引言: 如第一篇挑战赛的博客(# CVPR2023挑战赛之-开放车道拓扑信息(OpenLane Topology)的测试【1】)所说,这项任务,实际上是一个复合任务,其评价指标也是语义分割、目标检测加拓扑位置关系三个指标的精准性平均值。本博客就第一名公布的Arxiv方法进行了解读,并对topol…

iview input组件clearable清空属性无法清空双向绑定值的原因解决

最近在使用iview新版本 input组件时,刚开始发现使用v-modal绑定的值,在点击clearable清除input框内容时,再次搜索发现参数还是没有被清掉 于是仔细查看代码的细节,才发现问题所在: 原来我绑定的参数的中文名称&#x…

【C1】数据类型,运算符/循环,数组/指针,结构体,main参数,static/extern,编译预处理,gdb,makefile

文章目录 1.数据类型:编译器(compiler)与解释器(interpreter),中文里的汉字和标点符号是两个字节,不能算一个字符(单引号)2.运算符/循环:sizeof/size_t3.数组…

SQL中的——左连接(Left join)、右连接(Right join)、内连接(Inner join)

前言 最近有一个开发需求,需要实现一个复杂年度报表,前后端都是博主开发,这里的业务逻辑比较复杂,也很锻炼sql能力,这里博主也将表的内外连接做了一个整理分享给大家 一、概念 首先还是介绍一下这三个的定义 1.Lef…

C#难点语法讲解之abstract---从应用需求开始讲解

一、背景故事 我们正常写的脚本,一般都是非常完整的,脚本完整意味着需求完整。 例如,我是售货员,现在苹果5元,梨子3元,西瓜20元, 一个人,来买了5个苹果,4个梨子&#xf…

springcloud二回头

Spring Cloud 一种微服务,以往的单体项目在一定程度的累积后,一些服务需要进行拆分,独立进行开发,然后再合起来,之前的是装成一个包进行部署 不同的搭配: spring cloud和boot的对应版本: Rest…

JavaScript 内置对象 数据类型

目录 JavaScript 内置对象 1.内置对象 2.查文档 2.1MDN 2.2 如何学习对象中的方法 3.Math对象 3.1Math 概述 3.2随机数方法 random() 4. 日期对象 4.1Date 概述 4.2Date() 方法的使用 4.3 日期格式化 4.4获取毫秒的总的毫秒形式 5.数组对象 5.1数组对象的创建 5…

1. Netty核心功能与线程模型详解

Netty 1. 认识Netty2. 第一个Netty程序 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 01、Netty核心组件快速了解 02、Hello,Netty! 03、深入理解Channel、EventLoop(Group) 04、深…

MySql的使用

目录 一、安装与启动1.1 Ubuntu下的使用1.2 Mac下的使用 二、MySQL图形化管理工具的使用三、数据完整性3.1 数据类型3.2 约束 四、常用的sql语句4.1 数据库操作4.2 数据库表操作1.查看当前数据库中所有表2.查看建表的数据结构3.创建表4.添加字段5.修改字段6. 删除字段7. 查看表…