基于Spring Cloud Data Flow(SCDF)的文档,仅以“已部署”为前缀的属性。或“app。”在将应用程序(可以是源,处理器或接收器)部署为流的一部分时,会考虑这些内容。
但是,我注意到除了前缀之外,所有属性都必须作为“字符串”提供,无论它们的原始类型是什么;否则,根据这行代码,SCDF会简单地将它们丢弃:
propertiesToUse = DeploymentPropertiesUtils.convert(props);
这样做:
public static Map<String, String> convert(Properties properties) {
Map<String, String> result = new HashMap<>(properties.size());
for (String key : properties.stringPropertyNames()) {
result.put(key, properties.getProperty(key));
}
return result;
}
正如您从上面的代码片段中看到的那样,它只考虑“stringPropertyNames”,它会过滤掉任何未作为“字符串”提供的内容。
我认为这种行为是故意的,但为什么呢?为什么不选择具有正确前缀的用户定义的所有属性?
感谢您的支持。
答案 0 :(得分:2)
根据部署者SPI设置的contract,所有部署属性都应为http://localhost:8080/employee?ids=1&ids=2&ids=3
http://localhost:8080/employee?ids=1,2
。
我相信其中一个原因就是拥有String键,将值传递给目标部署平台而不会出现序列化/反序列化障碍。并且,使用String值类似于如何在目标部署平台中将这些键值属性设置为环境变量(例如)。