apache-nifi - 如何在“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'
请在下面找到显示更多详细信息的图像链接:
解决方案
查看ExecuteGroovyScript 处理器的其他详细信息文档
SQL.*
对于从相应连接池中获取的数据库连接的所有参数,在触发时自动进行。并且SQL.xxx
变量引用groovy.sql.Sql 对象
如果您想访问任何控制器服务 -CTL.
为您的参数使用前缀。
在这种情况下,变量CTL.xxx
直接提供到 ControllerService 的链接。
推荐阅读
- go - 如何从随机森林分类器预测转换为回归器预测?
- javascript - JavaScript - 如何禁用和启用多个按钮?
- r - R中矩阵的离散差分算子?
- javascript - 如何将随机数值放入 svg“fill”属性的“rgb()”?
- javascript - 如何使用 Material UI Grid 组件将一个项目左对齐和另一个右对齐
- python - 在新的云数据存储模式下实现 ndb.StructuredProperty 的等效性?
- android - 无法访问片段的 onActivityResult zxing
- swift - timeInterval 更新函数问题。玩家消失
- python - 在python pandas中将多个分隔符拆分为相同的列
- javascript - 通过JavaScipt将字符串放入HTML时的双引号