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

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

码农世界 2024-05-24 前端 73 次浏览 0个评论

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

转载请注明来自码农世界,本文标题:《Spring Boot 实现 RabbitMQ 监听消息的几种方式》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,73人围观)参与讨论

还没有评论,来说两句吧...

Top