使用 RabbitMQ 通过 Spring Cloud Stream 为消费者提供多个绑定路由密钥

Joh*_*han 4 spring rabbitmq spring-boot spring-cloud-stream

我想在 Spring Cloud Stream 中配置一个输入通道,以将其绑定到具有多个路由键的同一交换(目的地)。我已经设法使用单个路由键来实现此功能,如下所示:

spring:
  cloud:
    stream:
      rabbit:
        bindings:
          input1:
            consumer:
              bindingRoutingKey: key1.#
      bindings:
        input1:
          binder: rabbit
          group: group1
          destination: dest-group1
Run Code Online (Sandbox Code Playgroud)

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

spring:
  cloud:
    stream:
      rabbit:
        bindings:
          input1:
            consumer:
              bindingRoutingKey: key1.#,key2.#
      bindings:
        input1:
          binder: rabbit
          group: group1
          destination: dest-group1
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

我使用的是 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>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

spring.cloud.stream.rabbit.bindings.<channel-name>.consumer.binding-routing-key-delimiter=,
Run Code Online (Sandbox Code Playgroud)

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

spring.cloud.stream.rabbit.bindings.<channel-name>.consumer.binding-routing-key=key1,key2,key3
Run Code Online (Sandbox Code Playgroud)

谢谢加里

参考文档