只是试用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一起使用(这应该是我的理解)?任何指针都将非常感谢,谢谢。
默认情况下,Spring Cloud Stream绑定属性由SCDF在内部设置,具有您在上面提到的约定。
您在应用程序级别定义的application.properties
具有最低优先级,因此它们被SCDF设置的内容覆盖。
要覆盖SCDF设置的这些属性,您需要通过流deployment
属性传递新属性。您可以参考此here的文档
如果您使用Spring Cloud Config服务器来提供外部化属性,我相信那些只能用作流definition
属性,而不能用于我们传递的覆盖Spring Cloud Stream绑定属性的deployment
属性。