首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring routingKeyExpression属性不起作用

Spring routingKeyExpression属性不起作用
EN

Stack Overflow用户
提问于 2019-06-10 15:02:44
回答 1查看 1.2K关注 0票数 0

我在RabbitMQ中使用spring云流。(Spring版本是格林威治)我有一个有两个队列的主题,我想使用路由密钥向每个队列发送消息。

但它不能正常工作。

当我通过每个@输出通道发送消息时,消息会同时发送到两个队列。(我想要一个队列的1条消息,但1条消息转到2个队列)

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

代码语言:javascript
复制
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

我的使用者配置如下

代码语言:javascript
复制
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条消息。

我错什么了?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 15:46:56

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

文献资料

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56528887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档