java - NIFI:未找到适用于此属性的控制器服务类型
问题描述
我正在为 Apache NiFi 开发 Milo OPCUA 处理器和服务。处理器和服务编译得很好,我可以用它们启动 NiFi。但是,当尝试为我刚刚添加的处理器配置服务时,它只会显示“未找到适用于此属性的控制器服务类型。”。
这是我的POM:
处理器 JAR
<parent>
<groupId>com.tcon</groupId>
<artifactId>pubsub</artifactId>
<version>0.1</version>
</parent>
<artifactId>nifi-pubsub-processors</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-utils</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>tcon</groupId>
<artifactId>nifi-miloservice-api</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
处理器 NAR
<parent>
<groupId>com.tcon</groupId>
<artifactId>pubsub</artifactId>
<version>0.1</version>
</parent>
<artifactId>nifi-pubsub-nar</artifactId>
<version>0.1</version>
<packaging>nar</packaging>
<properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<source.skip>true</source.skip>
</properties>
<dependencies>
<dependency>
<groupId>com.tcon</groupId>
<artifactId>nifi-pubsub-processors</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-standard-services-api-nar</artifactId>
<version>1.2.0</version>
<type>nar</type>
</dependency>
</dependencies>
服务 POM 应该无关紧要,afaik。它们没有被修改,除了一些 Milo 依赖项。
如您所见,处理器 JAR POM 具有来自我的自定义服务的自定义服务 API 依赖项,处理器 NAR POM 具有来自 nifi 的标准 API 依赖项。
文档说这就是我需要做的所有事情来将我的处理器“链接”到我的服务。
我错过了什么?
解决方案
您还需要通过在处理器 JAR 项目的 src/main/resources 文件夹中包含一个文件来向 ServiceLoader 注册控制器服务。您需要在资源文件夹下有一个 META-INF/services 文件夹,并使用org.apache.nifi.controller.ControllerService
包含实现 ControllerService 接口的类的完全限定名称的行调用一个文件。
推荐阅读
- android - InsetDrawable 在 API 21 上不起作用 - 为什么?
- laravel - Laravel 将 @foreach 循环替换/转换为具有数据库关系的 vue v-for 循环
- flutter - 第一次构建时从后端初始化我的列表
- python - matplotlib/seaborn 小提琴图与颜色图
- r - 如何将函数应用于向量中的每个连续 n 元素
- c++ - 如何在 C++ 中使用 gradle 添加仅标头依赖项
- java - 如何在 Spring Boot 中使用具有不同 Content-Type 的 SOAP 1.2
- nativescript - tns 构建给出致命错误:无效标记压缩接近堆限制分配失败 - JavaScript 堆内存不足
- terminology - noddy代码测试原理是什么
- angular - 为什么 request.ts 中的 serializeBody 方法在 case 字符串中不转换 JSON.stringify(this.body)?