当前位置: 首页 > news >正文

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 注解标记,分别处理字符串类型和整数类型的消息。当不同类型的消息到达队列时,根据消息类型调用对应的处理方法来处理消息。

相关文章:

  • 系统架构师考试(十)
  • 爱设计AiPPT.cn赵充:营销工作的AI进化
  • Android Settings系统属性读写
  • Linux(openEuler22.03) 定时备份任务 解决方案
  • LIO-EKF: High Frequency LiDAR-Inertial Odometry using Extended Kalman Filters
  • 【大数据面试题】32 Flink 怎么重复读 Kafka?
  • SpringBoot自动装配原理是什么?
  • 互联网医院开发:引领智慧医疗新时代
  • Mac安装配置maven
  • KDE-Ambari-Metrics-Collector问题排查解决手册
  • 企业防泄密软件有哪些,哪个排名最好
  • 指针数组与数组指针的理解
  • 前端基础:1-2 面向对象 + Promise
  • 4、设计模式之工厂模式
  • C语言常用的内存操作函数
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • hadoop集群管理系统搭建规划说明
  • interface和setter,getter
  • JavaScript DOM 10 - 滚动
  • java中的hashCode
  • leetcode386. Lexicographical Numbers
  • mysql常用命令汇总
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue的全局变量和全局拦截请求器
  • 工作中总结前端开发流程--vue项目
  • 基于遗传算法的优化问题求解
  • 基于组件的设计工作流与界面抽象
  • 跨域
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 突破自己的技术思维
  • 我有几个粽子,和一个故事
  • 译自由幺半群
  • 找一份好的前端工作,起点很重要
  • 智能合约Solidity教程-事件和日志(一)
  • 转载:[译] 内容加速黑科技趣谈
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ‌JavaScript 数据类型转换
  • # Redis 入门到精通(一)数据类型(4)
  • #etcd#安装时出错
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (11)MATLAB PCA+SVM 人脸识别
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Java入门)抽象类,接口,内部类
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (ZT)一个美国文科博士的YardLife
  • (补充)IDEA项目结构
  • (多级缓存)缓存同步
  • (二)测试工具
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (排序详解之 堆排序)
  • (算法)大数的进制转换
  • (学习日记)2024.01.19