首页 > 解决方案 > 如何在“ExecuteGroovyScript”处理器中使用“DBCPConnectionPoolLookup”控制器服务

问题描述

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

在“ExecuteGroovyStript”处理器中,我有一个属性“SQL.clientdb”,它指向“查找”服务。同时,我委托了一个“DBCPConnectionPool”服务,其中包含所有必需的详细信息及其“name”属性,类似于“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. 'ExecuteScript' 的配置
  2. 连接池服务
  3. 输入文件的属性

标签: apache-nifi

解决方案


查看ExecuteGroovyScript 处理器的其他详细信息文档

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

如果您想访问任何控制器服务 -CTL.为您的参数使用前缀。

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


推荐阅读