SpringBoot实现RabbitMQ监听消息的四种方式

 更新时间:2024年05月21日 09:02:52   作者:阿湯哥  
本文主要介绍了SpringBoot实现RabbitMQ监听消息的四种方式,包括@RabbitListener,MessageListener接口,MessageListenerAdapter适配器,@RabbitHandler这几种,感兴趣的可以了解一下

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

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

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

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

  • @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 {

    @Override
    public 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 {

    @RabbitHandler
    public void handleStringMessage(String message) {
        System.out.println("Received string message: " + message);
        // 处理字符串类型消息
    }

    @RabbitHandler
    public void handleIntMessage(Integer message) {
        System.out.println("Received integer message: " + message);
        // 处理整数类型消息
    }
}

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

到此这篇关于SpringBoot实现RabbitMQ监听消息的四种方式的文章就介绍到这了,更多相关SpringBoot RabbitMQ监听内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring底层核心源码原理解析

    Spring底层核心源码原理解析

    这篇文章主要介绍了Spring底层核心源码原理解析,当在某个方法上加了@Transactional注解后,就表示该方法在调用时会开启Spring事务,而这个方法所在的类所对应的Bean对象会是该类的代理对象,需要的朋友可以参考下
    2023-09-09
  • 新版SpringSecurity安全配置说明

    新版SpringSecurity安全配置说明

    这篇文章主要介绍了新版SpringSecurity安全配置说明,在 Spring Security 5.7.0-M2 中,我们弃用了WebSecurityConfigurerAdapter,因为我们鼓励用户转向基于组件的安全配置,需要的朋友可以参考下
    2023-07-07
  • Spring MVC注解式开发使用详解

    Spring MVC注解式开发使用详解

    本篇文章主要介绍了Spring MVC注解式开发使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 详解java中List中set方法和add方法的区别

    详解java中List中set方法和add方法的区别

    本文主要介绍了详解java中List中set方法和add方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • springboot动态调用实现类方式

    springboot动态调用实现类方式

    这篇文章主要介绍了springboot动态调用实现类方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Aspectj框架实战案例详解

    Aspectj框架实战案例详解

    这篇文章主要介绍了Aspectj框架实战,结合具体案例形式详细分析了Aspectj框架具体配置、使用、编译等相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • 浅谈Java垃圾回收机制

    浅谈Java垃圾回收机制

    Java 中,程序员不需要关心所有不再使用的对象。垃圾回收机制自动销毁这些对象。垃圾回收机制是守护线程的最佳示例,因为它始终在后台运行。垃圾回收机制的主要目标是通过销毁无法访问的对象来释放堆内存。下面我们就来详细介绍吧
    2021-09-09
  • Java实现学生信息管理系统(借助Array List)

    Java实现学生信息管理系统(借助Array List)

    这篇文章主要为大家详细介绍了Java实现学生信息管理系统,借助Array List,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java实现较大二进制文件的读、写方法

    Java实现较大二进制文件的读、写方法

    本篇文章主要介绍了Java实现较大二进制文件的读、写方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)

    Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)

    这篇文章主要介绍了Java安全框架——Shiro的使用详解,帮助大家更好的理解和学习使用Shiro,感兴趣的朋友可以了解下
    2021-04-04

最新评论