【问题标题】:Spring Cloud Stream - routingKeyExpression property doesn't workSpring Cloud Stream - routingKeyExpression 属性不起作用
【发布时间】:2019-06-10 15:02:44
【问题描述】:

我正在使用带有 RabbitMQ 的 Spring Cloud Stream。 (春云版为格林威治) 我有一个包含两个队列的主题,我想使用路由键向每个队列发送消息。

但它不能正常工作。

当我通过每个 @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'"。

如果我用 output1 发送“第一”消息,用 output2 发送“第二”消息,

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

总共生成 4 条消息。

我错了什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: spring-cloud-stream spring-rabbit


    【解决方案1】:

    您缺少用于 rabbitmq 特定绑定器属性的 .rabbit 元素。

    the documentation

    以下属性仅适用于 Rabbit 生产者,并且必须以 spring.cloud.stream.rabbit.bindings.<channelName>.producer. 为前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2021-12-13
      • 2020-03-08
      • 2020-08-21
      • 2021-05-07
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多