Ris*_*sad 0 apache minify hortonworks-data-platform apache-nifi hortonworks-dataflow
我正在尝试学习如何创建自定义NiFi控制器服务。首先,我想DBCPConnectionPool通过简单地复制原始DBCPConnectionPool服务源代码来模仿控制器服务。为此,我从“ nifi - service -bundle -archetype” 生成了一个Maven原型,并获得了以下项目结构

然而,当我从“nifi-生成的原型处理器 -bundle-原型,我得到了以下的结构: -

我知道在处理器的情况下,我只需要MyProceesor.java在nifi-ListDbTableDemo-processors文件夹下编写当前代码,然后从中创建一个nar文件。但是在控制器服务的情况下,我生成了4个文件夹。我可以看到两个Java文件,即
StandardMyService.java存在于资料nifi-DbcpServiceDemo夹下
MyService.java存在于资料nifi-DbcpServiceDemo-api夹下
现在,为什么在自定义控制器服务的情况下生成两个Java文件,而在自定义处理器的情况下为什么仅生成一个Java文件。另外,由于我试图模仿该DBCPConnectionPool服务,因此应在其中两个Java文件中复制服务的原始源代码DBCPConnectionPool。
请从头开始指导我,创建与该服务等效的自定义服务所需遵循的步骤DBCPConnectionPool。
MyService.javaunder nifi-DbcpServiceDemo-api是由StandardMyService.javaunder 实现的接口nifi-DbcpServiceDemo。完成实现后,您必须nifi-DbcpServiceDemo-api在需要与此自定义控制器服务一起使用的处理器包中用作依赖项。
通过这种方式实现控制器服务的原因是:
StandardMyServiceTwo这又一次实现,MyService因为只有实现有所不同StandardMyService,其他成员保持不变并且可以共享。可以透明地引入此新的控制器服务,而无需对处理器包进行任何更改。例:
最好的例子是记录读取器/写入器控制器服务。如果您查看nifi中的nifi-record-serialization-services-bundle,它们对序列化JSON,Grok,avro,CSV数据格式的记录有不同的实现,但是它们实际上都在实现一个API- nifi-record-serialization-service -api因此,对于想要使用Record Readeror Record Writer而不是将实际实现作为其依赖项的处理器,他们宁可将api作为其依赖项。
因此,明天您可以在record-serialization-services-bundle中添加新的实现,以获取新的数据格式,而不会影响处理器捆绑包。
供您参考,请查看以下链接,这些链接将帮助您从头开始编写自定义控制器服务
| 归档时间: |
|
| 查看次数: |
1277 次 |
| 最近记录: |