在springboot中从rabbitMQ消费时@RabbitListener()的使用和DirectMessageListenerContainer的使用之间的区别

问题描述

我正在尝试在 spring 中配置并发消费者以使用来自 RabbitMQ 的消息,以实现我以两种方式配置消费者

1.用 @RabbitListener(queues = "name of queue") 注释一个方法

2.实现“MessageListener”接口并覆盖onMessage(Message message)

就我而言,这两种方式都很好,但我无法弄清楚使用 @RabbitListener() 启动消费者的优缺点是什么。

另外补充一点,我在我的配置中配置了“DirectMessageListenerContainer”并将其映射到“MessageListener”实现以实现并发消费者,我的问题是我们可以为通过@RabbitListener() 实现的消费者做相同的映射,如果是这样如何。我找不到关于消费者如何开始使用 @RabbitListener() 注释方法的任何来源可以使用“DirectMessageListenerContainer”进行配置

感谢任何帮助。

解决方法

@RabbitListener 只是一个更高级别的抽象。它使用下面的侦听器容器。

使用 spring boot 时,使用 ...listener.type 应用程序属性指定您想要的容器类型。

默认值为 simple