【发布时间】: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