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 following properties are available for Rabbit producers only and must be prefixed with spring.cloud.stream.rabbit.bindings.<channelName>.producer.
.
我正在使用 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 following properties are available for Rabbit producers only and must be prefixed with
spring.cloud.stream.rabbit.bindings.<channelName>.producer.
.