【发布时间】:2019-05-30 07:55:27
【问题描述】:
我正在将旧版 Spring 应用程序切换到 Spring Boot。
使用spring cloud streamrabbitmq迁移rabbitmq代码存在问题。
在遗留系统中,rabbitmq队列是通过给出exchange、routingKey和队列名称来建立的。
例如,
exchange name = mq-test.topic
routingKey = mq-test
queueName = aa.mq-test
所以在 rabbitmq 管理视图中我可以看到 exchange 是 mq-test.topic,queue 是 aa.mq-test。
但是使用spring cloud stream,队列名称会点缀着目的地,例如
mq-test.topic.aa.mq-test
我的spring cloud stream的属性是这样的。
spring.cloud.stream.bindings.channelName.destination=mq-test.topic
spring.cloud.stream.bindings.channelName.producer.bindingRoutingKey=mq-test
spring.cloud.stream.bindings.channelName.producer.requiredGroups=aa.mq-test
我也使用了 routingKeyExpression 属性来代表 bindingRoutingKey 但结果是一样的。
有旧应用程序通过队列名称使用数据,而我的新应用程序仅在生成,因此我无法更改交换和队列名称策略。
如何使用 Spring Cloud Stream 保持交换/队列命名?
感谢任何帮助。
【问题讨论】:
标签: spring stream cloud spring-rabbit