如何在'ExecuteGroovyScript'处理器中使用'DBCPConnectionPoolLookup'控件服务

时间:2019-09-11 07:11:26

标签: apache-nifi

我想根据输入流文件中发送给ExecuteGroovyStript处理器的'database.name'属性访问多个数据库。

在“ ExecuteGroovyStript”处理器中,我有一个属性“ SQL.clientdb”,它指向“查找”服务。同时,我已经调试了一个“ DBCPConnectionPool”服务,该服务具有所有必需的详细信息及其“名称”属性,类似于“ database.name”的值。 我尝试访问池服务的方式是:  def clientDb = SQL.clientdb.getConnection(flowFile.getAttributes())

运行Groovy处理器后收到的错误是 org.apache.nifi.processor.exception.ProcessException: Attributes must contain an attribute name 'database.name': org.apache.nifi.processor.exception.ProcessException: Attributes must contain an attribute name 'database.name'

请在下面找到显示更多详细信息的图像链接:

  1. Configuration of 'ExecuteScript'
  2. Connection pool services
  3. Attributes of input file

1 个答案:

答案 0 :(得分:0)

检查additional detailsExecuteGroovyScript processor文档

对于所有SQL.*参数,在触发时自动从相应的连接池获得与数据库的连接。并且SQL.xxx变量引用groovy.sql.Sql object

如果要访问任何控制器服务,请为参数使用CTL.前缀。

在这种情况下,变量CTL.xxx直接提供了到ControllerService的链接。