使用 RabbitMQ 的 Spring Cloud Stream 消费者的多个 bindingRoutingKey
Multiple bindingRoutingKey's for a consumer with Spring Cloud Stream using RabbitMQ
我想在 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>
有人知道如何实现吗?
用属性做不到;但是您可以将附加绑定声明为 beans;参见 this answer。
还有一个 third party "advanced" boot starter 允许您在 yaml 文件中添加声明。我没试过,但看起来很有趣。
现在可以通过添加 属性:
来完成
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
我想在 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>
有人知道如何实现吗?
用属性做不到;但是您可以将附加绑定声明为 beans;参见 this answer。
还有一个 third party "advanced" boot starter 允许您在 yaml 文件中添加声明。我没试过,但看起来很有趣。
现在可以通过添加 属性:
来完成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