关于rabbitmq接受信息的问题

关于rabbitmq接受信息的问题

@Component
@RabbitListener(queues = "queue1")
public class Receiver1 {

@RabbitHandler
public void process(String message) {
System.out.println("Receiver1: " + message);
   }
}

1、@RabbitListner 和 @RabbitHandle两个注解作用是什么,一定得同时使用才能监听消息吗;

2、是不是对于每一个queue,都得创建一个component?能再一个component中创建多个监听方法吗;

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、

  • @RabbitListener注解用于指定要监听的队列。@RabbitHandle注解用于表示收到某队列对应类型的消息时,要执行的内容。

  • @RabbitListener可以标注在方法上,也可以标注在类上。当@RabbitListener标注在类上面时,需配合@RabbitHandler注解一起使用,不同类型的消息使用不同的方法来处理。@RabbitListener标注在类上面表示当有收到某队列queue里面的消息的时候,就交给@RabbitHandler的方法处理。

  • 两个注解需要同时使用才能监听消息。

2、同学可以使用一个component监听多个queue队列。同学也可以使用一个compoent监听一个队列。

例如监听queue1,queue2两个队列,参考代码如下:

http://img1.sycdn.imooc.com//climg/6018ee8f09884b8d04770225.jpg

祝学习愉快~

  • 慕前端2370429 提问者 #1

    1、@RabbitListener标注在方法上时,就不需要@RabbitHandler注解了对吧,。

    @Component
    public class FanoutReceiver {
    @RabbitListener(queues = "queue-one")
    public void handler1(String msg) {
    System.out.println("FanoutReceiver:handler1:" + msg);
       }
    @RabbitListener(queues = "queue-two")
    public void handler2(String msg) {
    System.out.println("FanoutReceiver:handler2:" + msg);
       }
    }

    像这样可以吗?这种用法跟老师讲的又有什么区别呢?

    2、@RabbitHandler表示根据消息类型,用不同的方法处理是吧。那RabbitMQ都支持什么数据类型的消息呢?

    2021-02-02 14:29:37
  • 好帮手慕阿慧 回复 提问者 慕前端2370429 #2

    同学你好,

    1、是的,@RabbitListener标注在方法上时,就不需要@RabbitHandler注解了。

    这两个没有区别,是两种不同的接收方式。

    2、RabbitMQ支持任何类型的数据消息。如map类型,字符串类型等。

    例如,发送Map类型数据时,process()方法中参数应该是Map类型。

    参考代码如下:

    http://img1.sycdn.imooc.com//climg/601927760950c57908500468.jpg

    http://img1.sycdn.imooc.com//climg/60192786099efeb005740376.jpg

    祝学习愉快~

    2021-02-02 18:21:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师