Apache nifi ApacheNIFI-使用相对路径使流定义可移植

Apache nifi ApacheNIFI-使用相对路径使流定义可移植,apache-nifi,Apache Nifi,我想通过将绝对文件路径替换为以下项目中的相对文件路径,使流定义可移植 所有ExecuteScript处理器的脚本路径属性 数据库驱动程序位置控制器服务的属性 密钥库文件名和信任库文件名标准受限SSLContextService的属性控制器服务 问题: 是否可以在上述项目中使用相对路径 相对路径的根指向-nifi安装目录的哪里 在流量限制中管理路径的最佳实践是什么 使流定义可移植的任何其他最佳实践 编辑: 我们在流定义中使用参数,使每个环境的配置更容易。目前,我们有一个参数来指示Nifi根路径。这

我想通过将绝对文件路径替换为以下项目中的相对文件路径,使流定义可移植

  • 所有
    ExecuteScript
    处理器的
    脚本路径
    属性
  • 数据库驱动程序位置
    控制器服务的属性
  • 密钥库文件名
    信任库文件名
    标准受限SSLContextService的属性控制器服务
  • 问题:

  • 是否可以在上述项目中使用相对路径
  • 相对路径的根指向-nifi安装目录的哪里
  • 在流量限制中管理路径的最佳实践是什么
  • 使流定义可移植的任何其他最佳实践
  • 编辑:
    我们在流定义中使用参数,使每个环境的配置更容易。目前,我们有一个参数来指示Nifi根路径。这个问题背后的动机是检查是否可以通过使用相对路径完全消除此参数。

    如果属性支持表达式语言,则可以使用相对路径。对于脚本路径,数据库驱动程序位置支持;但是,密钥库和信任库路径不存在

    例如,我正在使用我的
    ExecuteScript
    s的相对脚本路径,以相同的路径在macos、windows以及linux上运行它们

    假设您的Nifi根目录是
    opt/Nifi/Nifi current
    ,根目录中有
    groovy
    文件夹,其中有一个
    FlowHandler.groovy
    。因此,您的脚本路径如下所示

    ${user.dir}${file.separator}groovy${file.separator}FlowHandler.groovy
    

    除此之外,我强烈建议您准备自己的docker映像(来自基本Nifi),并将所有固定的人员放在其中进行分发,这样您就可以在所有平台上保持文件路径基本稳定

    从Apache Nifi 1.10.0开始,有一个称为参数的功能,所有组件的所有属性都支持参数。参数使用不同的语法表示与EL的区别,因此参数是#{my.param}。您应该对所有进程组进行参数化,以便保存到NiFi注册表或通过右键单击PG下载的任何流在导入到另一个环境时都可以获得新的参数。

    只是澄清一下,
    ${user.dir}
    是指向NiFi根的参数还是特殊参数?实际上,它应该指向
    /opt/nifi/nifi current/groovy/FlowHandler.groovy
    ,对吗?感谢您对击键和信任存储路径的说明。'user.dir'指向Nifi root'user.dir和file.separator不是Nifi特有的,它们是java系统属性。Nifi能够通过EL对其进行评估。那太有用了。谢谢!谢谢你的建议。我们已经在流定义中使用了它们。将更新问题以澄清它。