Spring Cloud Data Flow Server application.properties将被忽略

时间:2017-07-19 17:10:36

标签: spring-cloud spring-cloud-stream spring-cloud-config spring-cloud-dataflow

试用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一起使用(这应该是我的理解)?任何指针都会非常感激,谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,Spring Cloud Stream绑定属性由SCDF在内部设置,具有您在上面提到的约定。

您在应用级别定义的application.properties优先级最低,因此会被SCDF设置的内容覆盖。

要覆盖SCDF设置的这些属性,您需要通过流deployment属性传递新属性。您可以参考此here

的文档

如果您使用Spring Cloud Config服务器提供外部化属性,我相信这些属性只能用作流definition属性,而不能用于deployment属性,例如我们传递给它们的属性覆盖Spring Cloud Stream绑定属性。