普通 NiFi 表达式语言没有得到解决

Plain NiFi Expression language not getting resolved

我正在尝试使用包含文件路径的环境变量,NiFi 表达式语言。当我只为文件名提供环境变量 ${MY_VAR} 时,它没有得到解析。

但是如果在 NiFi EL 之前有一个 space 或其他字符,它正在被评估,但这将产生一个无效的文件名。如何在没有任何额外字符的情况下解决这个问题。

所以根据观察,当整个内容只是一个 EL 时,它不会被评估,否则它是。

PS:我正在尝试在 Truststore 文件名 字段中默认提供文件名 StandardSSLContextService

您在 Apache NiFi 中遇到了错误。正如 Bryan 所指出的,信任库位置字段并不旨在支持表达式语言。问题源于 StandardSSLContextService:183 处的错误行,其中 .evaluateExpressionAttributes() 方法在自定义文件验证器中被调用,尽管上面几行的注释解释了此自定义验证器的全部原因是因为默认支持EL。

我 运行 一个远程调试器并且能够使用环境变量 TRUSTSTORE_LOCATION 评估 ${TRUSTSTORE_LOCATION} (必须在 NiFi 启动之前设置,因为 VariableRegistry.ENVIRONMENT_SYSTEM_REGISTRY仅由在 RunNiFi:270 中调用的 NotificationServiceManager 创建)。我能够看到它正确地将环境变量评估为文件路径,但随后它被连接到当前 运行 目录(.../nifi-assembly/target/nifi-1.4.0-SNAPSHOT-bin/nifi-1.4.0-SNAPSHOT/TRUSTSTORE_LOCATION)而不是被视为 absolute/relative 路径,因为属性 描述符不知道这是 EL 评估的结果。

我已提交 NIFI-4274 来记录此错误。一种解决方法是在 NiFi 中使用硬编码的信任库位置,并在您的文件系统上使用符号链接将其指向实际文件位置(如果您在配置时不知道它)。