如何使用自动声明队列的主题交换创建RabbitMQ MessageListener?

时间:2014-07-08 08:09:01

标签: rabbitmq spring-amqp spring-rabbit message-listener

我使用Spring AMQP在Java中使用RabbitMQ。我正在使用主题交换发送消息。

我想使用带有指定routingKey的autodeclared队列来使用消息,我设法实现这一点的唯一方法是使用Thread,我会等待交付(使用consumer.nextDelivery())。还有其他方法可以做这个异步吗?

Spring AMQP还有一个MessageListener接口,我只能用它来监听命名的队列。有没有办法可以使用MessageListener来消耗来自自动声明的队列的消息?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

有没有办法可以使用MessageListener来消耗来自自动声明的队列的消息?

实际上这是一个特殊的功能:http://docs.spring.io/spring-amqp/docs/latest-ga/reference/htmlsingle/#automatic-declaration

它是AMQP协议的主要特性 - 根据需要自动声明MQ对象。 此规则适用于queus以及它们之间的交换和绑定。

因此,对您而言,只需指定队列与该主题交换的绑定,并从<listener-container>配置中引用队列名称。

在启动应用程序时,所有AMQP对象将通过RabbitAdmin组件填充到RabbitMQ代理,如果它们当时尚未存在于代理中。