0


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

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

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 消息监听的示例代码:

importorg.springframework.amqp.rabbit.annotation.RabbitListener;importorg.springframework.stereotype.Component;@ComponentpublicclassRabbitMQListener{@RabbitListener(queues ="myQueue")publicvoidhandleMessage(String message){System.out.println("Received message: "+ message);// 在这里处理接收到的消息}}

在这个示例中,我们创建了一个名为

RabbitMQListener

的类,并使用

@RabbitListener

注解标记

handleMessage

方法,指定监听名为 “myQueue” 的队列。当消息到达队列时,

handleMessage

方法将被调用来处理接收到的消息。

2. MessageListener 接口方式

以下是使用

MessageListener

接口方式实现 RabbitMQ 消息监听的示例代码:

importorg.springframework.amqp.core.Message;importorg.springframework.amqp.core.MessageListener;importorg.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;publicclassMyMessageListenerimplementsMessageListener{@OverridepublicvoidonMessage(Message message){System.out.println("Received message: "+newString(message.getBody()));// 在这里处理接收到的消息}publicstaticvoidmain(String[] args){SimpleMessageListenerContainer container =newSimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);// 设置连接工厂
        container.setQueueNames("myQueue");// 设置监听的队列名称
        container.setMessageListener(newMyMessageListener());// 设置消息监听器
        container.start();// 启动监听容器}}

在这个示例中,我们创建了一个实现了

MessageListener

接口的

MyMessageListener

类来处理接收到的消息。然后,我们使用

SimpleMessageListenerContainer

设置连接工厂、队列名称和消息监听器,并启动监听容器。当消息到达时,

onMessage

方法将被调用来处理接收到的消息。

3. MessageListenerAdapter 适配器方式

以下是使用

MessageListenerAdapter

适配器方式实现 RabbitMQ 消息监听的示例代码:

importorg.springframework.amqp.core.Message;importorg.springframework.amqp.core.MessageListener;importorg.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;importorg.springframework.amqp.support.converter.MessageConverter;importorg.springframework.amqp.support.converter.SimpleMessageConverter;publicclassMyMessageListener{publicvoidhandleMessage(String message){System.out.println("Received message: "+ message);// 在这里处理接收到的消息}publicstaticvoidmain(String[] args){SimpleMessageListenerContainer container =newSimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);// 设置连接工厂
        container.setQueueNames("myQueue");// 设置监听的队列名称MessageListenerAdapter adapter =newMessageListenerAdapter(newMyMessageListener());
        adapter.setDefaultListenerMethod("handleMessage");// 设置默认处理方法MessageConverter converter =newSimpleMessageConverter();
        adapter.setMessageConverter(converter);// 设置消息转换器

        container.setMessageListener(adapter);// 设置消息监听适配器
        container.start();// 启动监听容器}}

在这个示例中,我们创建了一个

MyMessageListener

类,并定义了一个处理消息的方法

handleMessage

。然后,我们使用

MessageListenerAdapter

类将

MyMessageListener

类中的方法转换为消息监听器,并设置默认处理方法。最后,将消息监听适配器设置到

SimpleMessageListenerContainer

中,并启动监听容器来处理接收到的消息。

4. @RabbitHandler 注解方式

使用

@RabbitHandler

注解方式结合

@RabbitListener

注解实现多个不同类型消息的处理示例代码如下:

importorg.springframework.amqp.rabbit.annotation.RabbitHandler;importorg.springframework.amqp.rabbit.annotation.RabbitListener;importorg.springframework.stereotype.Component;@Component@RabbitListener(queues ="myQueue")publicclassMyMessageHandler{@RabbitHandlerpublicvoidhandleStringMessage(String message){System.out.println("Received string message: "+ message);// 处理字符串类型消息}@RabbitHandlerpublicvoidhandleIntMessage(Integer message){System.out.println("Received integer message: "+ message);// 处理整数类型消息}}

在这个示例中,我们创建了一个名为

MyMessageHandler

的类,并使用

@RabbitListener

注解标记整个类,指定监听名为 “myQueue” 的队列。然后,我们在类中定义了两个处理消息的方法,分别使用

@RabbitHandler

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


本文转载自: https://blog.csdn.net/ttyy1112/article/details/139072514
版权归原作者 阿湯哥 所有, 如有侵权,请联系我们删除。

“Spring Boot 实现 RabbitMQ 监听消息的几种方式”的评论:

还没有评论