apache nifi中如何动态连接多个数据库

问题描述 投票:0回答:1

我想根据某些条件连接多个数据源,我不想创建多个 DBCPConnectionPool 服务来连接每个数据库,我只想检查我的属性值是否为 oracle 然后我必须通过传递像 url 这样的 orcle 配置来连接我的 oracle 数据库,驱动程序名称,用户名和密码,如果是mysql那么我需要动态传递mysql相关配置,请你帮助我可以使用的处理器。

我正在使用 updateAttribute 处理器并设置一些条件,如下所示 属性:db.url 值:${datasource:equals('Oracle'):ifElse('Oracle-jdbc-url', 'Myslq-jdbc-url')}

属性:db.用户名 值:${datasource:equals('Oracle'):ifElse('oracle-username', 'mysql-username')}

属性:db.password 值:${datasource:equals('Oracle'):ifElse('oracle-password', 'mysql-password')}.

所以我不确定如何将这些值传递或读取到 DBCPConnectionPool

apache-nifi
1个回答
0
投票

您可以使用

DBCPConnectionPoolLookup
控制器服务来实现此目的。您为所需的每个数据库连接设置
DBCPConnectionPool
实例,然后将用户定义的(也称为动态)属性添加到
DBCPConnectionPoolLookup
,其中属性的名称是
database.name
属性将包含的值,并且值用户定义属性的 将会是相应的
DBCPConnectionPool
实例。

例如,如果您的

datasource
属性包含“Oracle”或“MySQL”或其他内容,您可以使用
UpdateAttribute
database.name
设置为
${datasource}
,然后为您的 Oracle 连接创建一个 DBCPConnectionPool 并添加一个名为
Oracle
到 DBCPConnectionPoolLookup,以 Oracle
DBCPConnectionPool
作为值。

© www.soinside.com 2019 - 2024. All rights reserved.