当前位置: 代码网 > it编程>编程语言>Java > Spring Boot 实现 RabbitMQ 监听消息的几种方式

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

2024年08月04日 Java 我要评论
通过在方法上标记注解来监听指定的队列,当消息到达时,被注解的方法将被调用。:实现 Spring AMQP 提供的接口,编写自定义的消息监听器,然后使用设置消息监听器。:通过类,可以将普通的 Java 方法转换为消息监听器,从而简化消息处理逻辑。:结合和注解,可以实现多个不同类型消息的处理方法,根据消息内容的不同调用对应的处理方法。这些方式都可以在 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 消息监听的示例代码:

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com