我在RabbitMQ中使用spring云流。(Spring版本是格林威治)我有一个有两个队列的主题,我想使用路由密钥向每个队列发送消息。
但它不能正常工作。
当我通过每个@输出通道发送消息时,消息会同时发送到两个队列。(我想要一个队列的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 1”或“queue1”的值。
如果我用output1发送“第一”消息,用output2发送“第二”消息,
“第一条”和“第二条”消息出现在主题中-.-.(路由密钥显示为'topic-a'),而相同的两条消息也在主题中--即队列2。
总共生成4条消息。
我错什么了?
任何帮助都将不胜感激。
发布于 2019-06-10 15:46:56
您缺少了专用于rabbitmq的绑定器属性的.rabbit元素。
见文献资料。
以下属性仅适用于兔子生产者,必须以
spring.cloud.stream.rabbit.bindings.<channelName>.producer.作为前缀。
https://stackoverflow.com/questions/56528887
复制相似问题