使用RabbitMQ为使用Spring Cloud Stream的消费者提供多个bindingRoutingKey

时间:2018-05-29 14:46:21

标签: spring spring-boot rabbitmq spring-cloud-stream

我希望将Spring Cloud Stream中的输入通道配置为使用多个路由键绑定到同一个交换机(目标)。我设法使用这样的单个路由键来实现这一点:

spring:
  cloud:
    stream:
      rabbit:
        bindings:
          input1:
            consumer:
              bindingRoutingKey: key1.#
      bindings:
        input1:
          binder: rabbit
          group: group1
          destination: dest-group1

但我似乎无法让它适用于多个键。我试过这个:

spring:
  cloud:
    stream:
      rabbit:
        bindings:
          input1:
            consumer:
              bindingRoutingKey: key1.#,key2.#
      bindings:
        input1:
          binder: rabbit
          group: group1
          destination: dest-group1

但这似乎不起作用。

我使用的是Spring Boot 2.0.1,并且从以下位置导入了Spring云依赖项:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Finchley.RC1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:3)

现在可以通过添加属性来完成此操作:

spring.cloud.stream.rabbit.bindings.<channel-name>.consumer.binding-routing-key-delimiter=,

然后您可以逗号分隔路由键:

spring.cloud.stream.rabbit.bindings.<channel-name>.consumer.binding-routing-key=key1,key2,key3

Thanks Gary

Reference documentation

答案 1 :(得分:2)

不能用属性来完成;但你可以将附加绑定声明为bean;见this answer

还有一个third party "advanced" boot starter允许您在yaml文件中添加声明。我没有尝试过,但它看起来很有趣。