SpringBoot实现RabbitMQ监听消息的四种方式
作者:阿湯哥
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监听内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!