我想根据输入流文件中发送给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'
请在下面找到显示更多详细信息的图像链接:
答案 0 :(得分:0)
检查additional details的ExecuteGroovyScript processor文档
对于所有SQL.*
参数,在触发时自动从相应的连接池获得与数据库的连接。并且SQL.xxx
变量引用groovy.sql.Sql object
如果要访问任何控制器服务,请为参数使用CTL.
前缀。
在这种情况下,变量CTL.xxx
直接提供了到ControllerService的链接。