Rabbit spring 云流绑定主题到单队列

Rabbit spring cloud stream bind topics to single queue

是否可以将多个主题从一个交换器绑定到一个队列? 例如,我有生产者声明交换并发送三个主题 log.verboselog.info log.error

我希望有两个消费者声明自己的队列并绑定到交换器。 第一个消费者订阅了前两个主题log.verboselog.info,另一个订阅了所有主题。

是否可以像这样为消费者 1 定义配置?

spring.cloud.stream.bindings.input.destination=log
spring.cloud.stream.rabbit.bindings.input.consumer.bindingRoutingKey=log.info,log.verbose

您目前无法通过 属性 配置来完成,但您可以自己添加第二个绑定,可以在管理 UI 上手动添加,也可以通过添加 ExchangeQueueBinding @Beans 到应用程序。您不能简单地添加第二个 @Binding bean,因为在 RabbitAdmin 时队列还不存在(当应用程序首次启动且不存在队列时)。

请参阅 Spring AMQP 参考手册中的 Configuring the broker

此技术不适用于匿名消费者(未为 input 指定 ...group 属性),因为队列名称未知。