Apache 如何从updateAttribute中的属性的文件中动态读取值?

Apache 如何从updateAttribute中的属性的文件中动态读取值?,apache,minify,apache-nifi,hortonworks-data-platform,hortonworks-dataflow,Apache,Minify,Apache Nifi,Hortonworks Data Platform,Hortonworks Dataflow,我使用“+”按钮在“updateAttribute”处理器中添加了一些自定义属性。例如:我声明了一个属性“DBConnectionURL”,并将其值设置为“jdbc:mysql://localhost:3306/test'. 然后,在“DBCPConnectionPool”服务控制器中,我简单地使用值“${DBConnectionURL}”作为“数据库连接URL”属性。但是,我手动指定了“DBConnectionURL”属性的值。我需要一种可以从文件动态输入值的方法,这样我只需要更改文件中的值,

我使用“+”按钮在“updateAttribute”处理器中添加了一些自定义属性。例如:我声明了一个属性“DBConnectionURL”,并将其值设置为“jdbc:mysql://localhost:3306/test'. 然后,在“DBCPConnectionPool”服务控制器中,我简单地使用值“${DBConnectionURL}”作为“数据库连接URL”属性。但是,我手动指定了“DBConnectionURL”属性的值。我需要一种可以从文件动态输入值的方法,这样我只需要更改文件中的值,“DBConnectionURL”的值就会根据文件中的值动态更改。有办法吗?

Rishab

您必须使用nifi变量注册表

在conf/nifi.properties中,您可以在其中配置以下配置,以便动态更新数据流中的值

nifi.variable.registry.properties=./dynamic.properties
您可以在文件dynamic.properties中指定变量,该文件应显示在conf目录中

例如,如果dynamic.properties文件包含以下值

DBCPURL= jdbc://<host>:<port>
DBCPURL=jdbc://:
您可以使用
${DBCPURL}

注意:如果更改conf/nifi.properties中的任何配置,则应重新启动nifi服务。否则,您的更改在数据流中无效


如果它对您有效,您可以随意接受它。

从(我相信)NiFi 1.5.0开始,您还可以通过右键单击并选择“变量”,从UI直接在流程组(包括根PG)上设置变量。这是一种内联的“变量注册表”,这样您就不需要上面描述的基于文件的注册表了。@Mahendra Prabhu它起作用了。谢谢。你真可怕:)不要犹豫,接受它作为答案,因为它可能对你有帮助someone@Mahendraprabhu我们处理多个数据库,因此如果源数据库从MySQl更改为Oracle,我必须手动更改“dynamic.properties”文件中的值。我需要自动化这个。一种方法是,我们可以为每个数据库创建多个属性文件,如:MySQL.properties、Oracle。财产。但我们如何为每个属性文件动态生成“DBCPConnectionPool”服务呢?我的意思是,如果源数据库更改了“DBCPConnectionPool”,则服务必须仅从为该特定数据库定义的属性文件中自动读取值,而不能从任何其他文件中读取值。您可以创建三个DBCPConnectionPool,在其中PT输出各种属性值,然后根据您的案例使用。