ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring Boot 实现 RabbitMQ 监听消息的几种方式 [打印本页]

作者: 吴旭华    时间: 2024-7-26 19:24
标题: Spring Boot 实现 RabbitMQ 监听消息的几种方式
Spring Boot 实现 RabbitMQ 监听消息的方式有以下几种:
这些方式都可以在 Spring Boot 项目中方便地实现 RabbitMQ 的消息监听功能。
1. @RabbitListener 注解方式

以下是使用 @RabbitListener 注解方式实现 RabbitMQ 消息监听的示例代码:
  1. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class RabbitMQListener {
  5.     @RabbitListener(queues = "myQueue")
  6.     public void handleMessage(String message) {
  7.         System.out.println("Received message: " + message);
  8.         // 在这里处理接收到的消息
  9.     }
  10. }
复制代码
在这个示例中,我们创建了一个名为 RabbitMQListener 的类,并使用 @RabbitListener 注解标记 handleMessage 方法,指定监听名为 “myQueue” 的队列。当消息到达队列时,handleMessage 方法将被调用来处理接收到的消息。
2. MessageListener 接口方式

以下是使用 MessageListener 接口方式实现 RabbitMQ 消息监听的示例代码:
  1. import org.springframework.amqp.core.Message;
  2. import org.springframework.amqp.core.MessageListener;
  3. import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
  4. public class MyMessageListener implements MessageListener {
  5.     @Override
  6.     public void onMessage(Message message) {
  7.         System.out.println("Received message: " + new String(message.getBody()));
  8.         // 在这里处理接收到的消息
  9.     }
  10.     public static void main(String[] args) {
  11.         SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
  12.         container.setConnectionFactory(connectionFactory); // 设置连接工厂
  13.         container.setQueueNames("myQueue"); // 设置监听的队列名称
  14.         container.setMessageListener(new MyMessageListener()); // 设置消息监听器
  15.         container.start(); // 启动监听容器
  16.     }
  17. }
复制代码
在这个示例中,我们创建了一个实现了 MessageListener 接口的 MyMessageListener 类来处理接收到的消息。然后,我们使用 SimpleMessageListenerContainer 设置连接工厂、队列名称和消息监听器,并启动监听容器。当消息到达时,onMessage 方法将被调用来处理接收到的消息。
3. MessageListenerAdapter 适配器方式

以下是使用 MessageListenerAdapter 适配器方式实现 RabbitMQ 消息监听的示例代码:
  1. import org.springframework.amqp.core.Message;
  2. import org.springframework.amqp.core.MessageListener;
  3. import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
  4. import org.springframework.amqp.support.converter.MessageConverter;
  5. import org.springframework.amqp.support.converter.SimpleMessageConverter;
  6. public class MyMessageListener {
  7.     public void handleMessage(String message) {
  8.         System.out.println("Received message: " + message);
  9.         // 在这里处理接收到的消息
  10.     }
  11.     public static void main(String[] args) {
  12.         SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
  13.         container.setConnectionFactory(connectionFactory); // 设置连接工厂
  14.         container.setQueueNames("myQueue"); // 设置监听的队列名称
  15.         MessageListenerAdapter adapter = new MessageListenerAdapter(new MyMessageListener());
  16.         adapter.setDefaultListenerMethod("handleMessage"); // 设置默认处理方法
  17.         MessageConverter converter = new SimpleMessageConverter();
  18.         adapter.setMessageConverter(converter); // 设置消息转换器
  19.         container.setMessageListener(adapter); // 设置消息监听适配器
  20.         container.start(); // 启动监听容器
  21.     }
  22. }
复制代码
在这个示例中,我们创建了一个 MyMessageListener 类,并界说了一个处理消息的方法 handleMessage。然后,我们使用 MessageListenerAdapter 类将 MyMessageListener 类中的方法转换为消息监听器,并设置默认处理方法。最后,将消息监听适配器设置到 SimpleMessageListenerContainer 中,并启动监听容器来处理接收到的消息。
4. @RabbitHandler 注解方式

使用 @RabbitHandler 注解方式结合 @RabbitListener 注解实现多个不同类型消息的处理示例代码如下:
  1. import org.springframework.amqp.rabbit.annotation.RabbitHandler;
  2. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. @RabbitListener(queues = "myQueue")
  6. public class MyMessageHandler {
  7.     @RabbitHandler
  8.     public void handleStringMessage(String message) {
  9.         System.out.println("Received string message: " + message);
  10.         // 处理字符串类型消息
  11.     }
  12.     @RabbitHandler
  13.     public void handleIntMessage(Integer message) {
  14.         System.out.println("Received integer message: " + message);
  15.         // 处理整数类型消息
  16.     }
  17. }
复制代码
在这个示例中,我们创建了一个名为 MyMessageHandler 的类,并使用 @RabbitListener 注解标记整个类,指定监听名为 “myQueue” 的队列。然后,我们在类中界说了两个处理消息的方法,分别使用 @RabbitHandler 注解标记,分别处理字符串类型和整数类型的消息。当不同类型的消息到达队列时,根据消息类型调用对应的处理方法来处理消息。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4