试用Spring Cloud Stream& SCDF看起来很简单(就像Spring一样)。 然而,偶然发现了什么。我有application.properties,其中包含以下条目。这是一个处理器应用程序。
spring.cloud.stream.bindings.input.destination=work.in
spring.cloud.stream.bindings.input.contentType=text/plain
spring.cloud.stream.bindings.input.binder=rabbit
spring.cloud.stream.bindings.input.group=testgroup
spring.cloud.stream.bindings.output.destination=work.out
spring.cloud.stream.bindings.output.contentType=text/plain
spring.cloud.stream.bindings.output.binder=rabbit
spring.cloud.stream.bindings.output.group=testgroup
当我将它作为一个独立的jar运行时(就像另一个Spring启动应用程序一样),它尊重application.properties并且所有工作都按预期工作。
当我使用SCDF创建流时,它会忽略属性并使用约定 stream_name.app_name 创建交换,这不是我想要的。
我希望在某些时候,我希望这些应用程序与spring-cloud配置服务器集成,我可以完全外部化来自不同来源的配置。
有人可以建议我缺少什么,以便使SCDF获取我的application.properties并使SCDF与Spring Cloud Config Server一起使用(这应该是我的理解)?任何指针都会非常感激,谢谢。
答案 0 :(得分:1)
默认情况下,Spring Cloud Stream绑定属性由SCDF在内部设置,具有您在上面提到的约定。
您在应用级别定义的application.properties
优先级最低,因此会被SCDF设置的内容覆盖。
要覆盖SCDF设置的这些属性,您需要通过流deployment
属性传递新属性。您可以参考此here
如果您使用Spring Cloud Config服务器提供外部化属性,我相信这些属性只能用作流definition
属性,而不能用于deployment
属性,例如我们传递给它们的属性覆盖Spring Cloud Stream绑定属性。