Spring Cloud Stream - routingKeyExpression 属性 不起作用

Spring Cloud Stream - routingKeyExpression property doesn't work

我正在使用 spring 云流和 RabbitMQ。 (Spring云版为格林威治) 我有一个主题和两个队列,我想使用路由键将消息发送到每个队列。

但是不能正常工作。

当我通过每个@Output 通道发送消息时,消息都进入了两个队列。 (我想要 1 个消息用于 1 个队列,但 1 个消息转到 2 个队列)

我的生产者配置如下(实际代码在 yaml 中)

Spring.cloud.stream.bindings.output1.destination=topic-a
Spring.cloud.stream.bindings.output1.producer.requiredGroups=queue1
Spring.cloud.stream.bindings.output1.producer.bindingRoutingKey=queue1
Spring.cloud.stream.bindings.output1.producer.routingKeyExpression=queue1

Spring.cloud.stream.bindings.output2.destination=topic-a
Spring.cloud.stream.bindings.output2.producer.requiredGroups=queue2
Spring.cloud.stream.bindings.output2.producer.bindingRoutingKey=queue2
Spring.cloud.stream.bindings.output2.producer.routingKeyExpression=queue2

我的消费者配置如下

spring.cloud.stream.bindings.input1.destination=topic-a
spring.cloud.stream.bindings.input1.group=queue1
spring.cloud.stream.bindings.input1.consumer.durableSubscription=true
spring.cloud.stream.bindings.input1.consumer.bindingRoutingKey=queue1

spring.cloud.stream.bindings.input2.destination=topic-a
spring.cloud.stream.bindings.input2.group=queue2
spring.cloud.stream.bindings.input2.consumer.durableSubscription=true
spring.cloud.stream.bindings.input2.consumer.bindingRoutingKey=queue2

我也尝试过不使用 requiredGorups 和 bindingRoutingKey,只在生产者配置中单独留下 routingKeyExpression。

我将 yaml 中的 routingKeyExpression 值赋给了“'queue1'”或“"queue1'"”。

如果我发送带有输出 1 的 'first' 消息和带有输出 2 的 'second' 消息,

'first' 和 'second' 消息在 topic-a.queue1 中。 (路由键显示为'topic-a')而同样的两条消息也在topic-a.queue2中。

总共生成了 4 条消息。

我哪里错了?

如有任何帮助,我们将不胜感激。

您缺少 rabbitmq-specific 活页夹属性的 .rabbit 元素。

参见the documentation

The following properties are available for Rabbit producers only and must be prefixed with spring.cloud.stream.rabbit.bindings.<channelName>.producer..