我正在尝试使用直接交换类型(通过交换和路由密钥创建)的退出队列中的消息。我只有交换名称和路由键,而没有队列名称。有对纯Java的支持,但没有地方可以在Spring引导中找到它。
@RabbitListener
@RabbitHandler
public void consumeMessage(Object message) {
LOGGER.debug("Message Consumed.... : {}", message.toString());
}
如何使用带有路由密钥和交换名而不是队列名的消息来消费消息,而@RabbitListener
要求queue
。
答案 0 :(得分:1)
消费者从队列消费而不是交换。您必须使用路由键将队列绑定到交换机。
编辑
有几种方法可以在代理上自动声明队列。
@RabbitListener(bindings =
@QueueBinding(exchange = @Exchange("myExchange"),
key = "myRk", value = @Queue("")))
public void listen(String in) {
System.out.println(in);
}
这将绑定一个匿名队列(自动删除),该匿名队列将在应用程序停止时删除。
@RabbitListener(bindings =
@QueueBinding(exchange = @Exchange("myExchange"),
key = "myRk", value = @Queue("foo")))
public void listen(String in) {
System.out.println(in);
}
将使用路由密钥将永久队列foo
绑定到交换机。
您还可以简单地声明#Bean
来表示队列,交换和绑定。