使用路由密钥使用 DirectExchange 消息并在 spring 启动时进行交换
Consume DirectExchange messages using routing key and exchange in spring boot
我正在尝试使用来自 exiting queue 的消息,其类型为 Direct Exchange(在交换和路由密钥的帮助下创建).我只有 交换名称 和 路由密钥 而 没有队列名称 。有对普通 Java 的支持,但没有地方可以找到它用于 Spring 引导。
@RabbitListener
@RabbitHandler
public void consumeMessage(Object message) {
LOGGER.debug("Message Consumed.... : {}", message.toString());
}
如何使用路由密钥和交换名称而不是队列名称来使用消息,因为 @RabbitListener
要求 queue
。
消费者从队列而不是交易所消费。您必须使用路由键将队列绑定到交换器。
编辑
有几种方法可以在代理上自动声明队列。
@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
。
我正在尝试使用来自 exiting queue 的消息,其类型为 Direct Exchange(在交换和路由密钥的帮助下创建).我只有 交换名称 和 路由密钥 而 没有队列名称 。有对普通 Java 的支持,但没有地方可以找到它用于 Spring 引导。
@RabbitListener
@RabbitHandler
public void consumeMessage(Object message) {
LOGGER.debug("Message Consumed.... : {}", message.toString());
}
如何使用路由密钥和交换名称而不是队列名称来使用消息,因为 @RabbitListener
要求 queue
。
消费者从队列而不是交易所消费。您必须使用路由键将队列绑定到交换器。
编辑
有几种方法可以在代理上自动声明队列。
@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
。