我使用Spring AMQP在Java中使用RabbitMQ。我正在使用主题交换发送消息。
我想使用带有指定routingKey的autodeclared队列来使用消息,我设法实现这一点的唯一方法是使用Thread,我会等待交付(使用consumer.nextDelivery())。还有其他方法可以做这个异步吗?
Spring AMQP还有一个MessageListener接口,我只能用它来监听命名的队列。有没有办法可以使用MessageListener来消耗来自自动声明的队列的消息?
谢谢!
答案 0 :(得分:2)
有没有办法可以使用MessageListener来消耗来自自动声明的队列的消息?
实际上这是一个特殊的功能:http://docs.spring.io/spring-amqp/docs/latest-ga/reference/htmlsingle/#automatic-declaration。
它是AMQP协议的主要特性 - 根据需要自动声明MQ对象。 此规则适用于queus以及它们之间的交换和绑定。
因此,对您而言,只需指定队列与该主题交换的绑定,并从<listener-container>
配置中引用队列名称。
在启动应用程序时,所有AMQP对象将通过RabbitAdmin
组件填充到RabbitMQ代理,如果它们当时尚未存在于代理中。