Spring Boot 实现 RabbitMQ 监听消息的几种方式

Spring Boot 实现 RabbitMQ 监听消息的几种方式

  • 1. @RabbitListener 注解方式
  • 2. MessageListener 接口方式
  • 3. MessageListenerAdapter 适配器方式
  • 4. @RabbitHandler 注解方式

Spring Boot 实现 RabbitMQ 监听消息的方式有以下几种:

  1. @RabbitListener 注解方式:通过在方法上标记 @RabbitListener 注解来监听指定的队列,当消息到达时,被注解的方法将被调用。

  2. MessageListener 接口方式:实现 Spring AMQP 提供的 MessageListener 接口,编写自定义的消息监听器,然后使用 SimpleMessageListenerContainer 设置消息监听器。

  3. MessageListenerAdapter 适配器方式:通过 MessageListenerAdapter 类,可以将普通的 Java 方法转换为消息监听器,从而简化消息处理逻辑。

  4. @RabbitHandler 注解方式:结合 @RabbitListener@RabbitHandler 注解,可以实现多个不同类型消息的处理方法,根据消息内容的不同调用对应的处理方法。

这些方式都可以在 Spring Boot 项目中方便地实现 RabbitMQ 的消息监听功能。

1. @RabbitListener 注解方式

以下是使用 @RabbitListener 注解方式实现 RabbitMQ 消息监听的示例代码:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class RabbitMQListener {@RabbitListener(queues = "myQueue")public void handleMessage(String message) {System.out.println("Received message: " + message);// 在这里处理接收到的消息}
}

在这个示例中,我们创建了一个名为 RabbitMQListener 的类,并使用 @RabbitListener 注解标记 handleMessage 方法,指定监听名为 “myQueue” 的队列。当消息到达队列时,handleMessage 方法将被调用来处理接收到的消息。

2. MessageListener 接口方式

以下是使用 MessageListener 接口方式实现 RabbitMQ 消息监听的示例代码:

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;public class MyMessageListener implements MessageListener {@Overridepublic void onMessage(Message message) {System.out.println("Received message: " + new String(message.getBody()));// 在这里处理接收到的消息}public static void main(String[] args) {SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();container.setConnectionFactory(connectionFactory); // 设置连接工厂container.setQueueNames("myQueue"); // 设置监听的队列名称container.setMessageListener(new MyMessageListener()); // 设置消息监听器container.start(); // 启动监听容器}
}

在这个示例中,我们创建了一个实现了 MessageListener 接口的 MyMessageListener 类来处理接收到的消息。然后,我们使用 SimpleMessageListenerContainer 设置连接工厂、队列名称和消息监听器,并启动监听容器。当消息到达时,onMessage 方法将被调用来处理接收到的消息。

3. MessageListenerAdapter 适配器方式

以下是使用 MessageListenerAdapter 适配器方式实现 RabbitMQ 消息监听的示例代码:

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.amqp.support.converter.SimpleMessageConverter;public class MyMessageListener {public void handleMessage(String message) {System.out.println("Received message: " + message);// 在这里处理接收到的消息}public static void main(String[] args) {SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();container.setConnectionFactory(connectionFactory); // 设置连接工厂container.setQueueNames("myQueue"); // 设置监听的队列名称MessageListenerAdapter adapter = new MessageListenerAdapter(new MyMessageListener());adapter.setDefaultListenerMethod("handleMessage"); // 设置默认处理方法MessageConverter converter = new SimpleMessageConverter();adapter.setMessageConverter(converter); // 设置消息转换器container.setMessageListener(adapter); // 设置消息监听适配器container.start(); // 启动监听容器}
}

在这个示例中,我们创建了一个 MyMessageListener 类,并定义了一个处理消息的方法 handleMessage。然后,我们使用 MessageListenerAdapter 类将 MyMessageListener 类中的方法转换为消息监听器,并设置默认处理方法。最后,将消息监听适配器设置到 SimpleMessageListenerContainer 中,并启动监听容器来处理接收到的消息。

4. @RabbitHandler 注解方式

使用 @RabbitHandler 注解方式结合 @RabbitListener 注解实现多个不同类型消息的处理示例代码如下:

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
@RabbitListener(queues = "myQueue")
public class MyMessageHandler {@RabbitHandlerpublic void handleStringMessage(String message) {System.out.println("Received string message: " + message);// 处理字符串类型消息}@RabbitHandlerpublic void handleIntMessage(Integer message) {System.out.println("Received integer message: " + message);// 处理整数类型消息}
}

在这个示例中,我们创建了一个名为 MyMessageHandler 的类,并使用 @RabbitListener 注解标记整个类,指定监听名为 “myQueue” 的队列。然后,我们在类中定义了两个处理消息的方法,分别使用 @RabbitHandler 注解标记,分别处理字符串类型和整数类型的消息。当不同类型的消息到达队列时,根据消息类型调用对应的处理方法来处理消息。

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

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

相关文章

[数据集][目标检测]狗脸检测数据集VOC+YOLO格式6154张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6154 标注数量(xml文件个数):6154 标注数量(txt文件个数):6154 标注…

【代码随想录算法训练营第37期 第十一天 | LeetCode20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值】

代码随想录算法训练营第37期 第十一天 | LeetCode20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值 一、20. 有效的括号 解题代码C&#xff1a; class Solution { public:bool isValid(string s) {stack<char> stk;for(int i 0; s[i]; i )…

dpc++预研

1 基于oneAPI工具的加速图像处理算法 2 使用英特尔oneAPI改进图像处理中的边缘检测算法 3 初学DPC&#xff08;1&#xff09; 4 DpC(DpCpp)入门上手指南 5 英特尔oneAPI——统一编程模型和跨架构编程语言DPC详细介绍与模板匹配算法实例 6 Intel DPC安装与使用 7 如何看待…

如何查看mysql使用的内存

要查看MySQL使用的内存&#xff0c;我们可以通过多种方式来获取相关信息。以下是几种常见的方法&#xff0c;包括使用命令行工具、MySQL的系统变量以及查询information_schema数据库。 1. 使用SHOW STATUS命令 我们可以使用SHOW STATUS命令来查看MySQL服务器状态&#xff0c;…

Winsock I/O 模型:性能和可扩展性的关键

目录 引言 Select模型 简介 主要特点 优点 缺点 工作原理 示例用法 WSAAsyncSelect异步I/O模型 简介 工作原理 主要步骤 优点 缺点 示例代码 WSAEventSelect事件选择模型 简介 工作原理 主要步骤 优点 缺点 示例代码 重叠I/O模型 简介 工作原理 主要优…

网络编程 一

一、UDP socket api的使用 Java 把系统原生的封装了. 核心的类有两个: 1 -> DatagramSocket 操作系统中,有一类文件,就叫socket文件. socket文件,抽象表示了 " 网卡"这样的硬件设备. 进行网络通信最核心的硬件设备网卡 通过网卡发送数据,就是写…

各手机品牌【短信收件箱数据库列名】对比:inbox的column横向对比

参考资料: https://blog.csdn.net/qq_35427437/article/details/85678647 https://www.cnblogs.com/bill-technology/p/4130917.html <font colorred>threads是存放会话的数据表&#xff0c;sms是存放短信的数据表&#xff0c;pdu是存放彩信的数据表</font> | 含义…

0基础从前端到Web3 —— Mine Clearance Frontend(二)

在一的基础上继续往下&#xff0c;本篇主要是链上调用部分&#xff0c;让整个项目可以进行最基本的扫雷游戏。 S u i M o v e \mathit {Sui\ Move} Sui Move 链上部署的自主实现的简单扫雷游戏可以点击查看&#xff0c;只不过这里将区域大小扩大为了 10 20 \text {10}\ \tim…

力扣Hot100-73矩阵置零(标记数组)

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 输入&…

大模型面试--大模型(LLMs)基础面

大模型&#xff08;LLMs&#xff09;基础面 1. 目前主流的开源模型体系有哪些&#xff1f; 目前主流的开源大模型体系有以下几种&#xff1a; 1. Transformer 系列 Transformer 模型是深度学习中的一类重要模型&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;领…

JavaWeb Sevelet学习 创建Sevelet程序

Servlet 是JavaWeb中的开发动态Web一门技术 是由Sun公司提供的一个接口&#xff0c;允许开发者编写运行在服务器&#xff08;Tomcat&#xff09;上的Java程序&#xff0c;这些程序可以 生成动态网页内容&#xff0c; 响应客户端的请求。简单来说&#xff0c;Servlet就是Java E…

今日arXiv最热大模型论文:LoRA又有新用途,学得少忘得也少,成持续学习关键!

自大模型&#xff08;LLM&#xff09;诞生以来&#xff0c;苦于其高成本高消耗的训练模式&#xff0c;学界和业界也在努力探索更为高效的参数微调方法。其中Low-Rank Adaptation&#xff08;LoRA&#xff09;自其诞生以来&#xff0c;就因其较低的资源消耗而受到广泛关注和使用…

Spring MVC八股文面试题及参考答案(4万字长文)

目录 什么是Spring MVC? 解释MVC模式及其在Spring MVC中的实现。 Spring MVC和Struts的区别是什么?

瑞芯微RV1126——交叉编译与移植

一、搭建这个nfs服务挂载 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu创建一个nfs共享目录&#xff1a; (3) sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务 (4) 修改配置文件: sudo vim /etc/exports 在这个配置文件里面添加&#xff1a;/hom…

C语言/数据结构——每日一题(设计循环队列)

一.前言 上一次我们分享了关于队列的基本实现——https://blog.csdn.net/yiqingaa/article/details/139033067?spm1001.2014.3001.5502 现在我们将使用队列知识来解决问题——设计循环队列&#xff1a;https://leetcode.cn/problems/design-circular-queue/submissions/533299…

50.WEB渗透测试-信息收集-CDN识别绕过(3)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;49.WEB渗透测试-信息收集-CDN识别绕过&#xff08;2&#xff09; 关于cdn的识别方法内容…

Leecode热题100--73:矩阵置零

题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 C&#xff1a; 思路&#xff1a; 可以使用两个数组来记录哪些行和列需要被置零。 首先&#xff0c;我们遍历整个矩阵&#xff0c;…

设计模式--享元模式

引言 享元模式&#xff08;Flyweight Pattern&#xff09;作为一种高效节省内存的结构型设计模式&#xff0c;其核心在于通过共享技术有效支持大量细粒度对象的重用&#xff0c;从而减少内存占用&#xff0c;提高系统性能。特别是在处理大量相似对象的场景下&#xff0c;享元模…

智慧监狱人员行为识别监测系统

智慧监狱人员行为识别监测系统是基于神经网络AI视觉智能分析算法开发的技术。智慧监狱人员行为识别监测系统利用现场监控摄像头&#xff0c;通过对人体活动骨架的结构化分析&#xff0c;根据人体运动轨迹定义了多种异常行为&#xff0c;从而实现对监舍内的静坐不动、离床、攀高…

Tron节点监控脚本使用说明

文章目录 一、配置二、脚本编写2.1 Python脚本--监控节点是否正在同步2.1.1 pyton脚本脚本示例2.1.2 使用说明2.2.3 脚本监控内容说明 2.2 Shell脚本--综合情况监控2.2.1 shell脚本示例2.2.2 使用说明2.2.3 脚本监控内容说明 最近搭建了TRON节点&#xff0c;为了防止节点在生产…