【发布时间】:2021-09-21 23:31:40
【问题描述】:
总的来说,我对 NiFi 比较陌生。我正在开发自定义控制器服务。我还在流程中设置了 cassandra 连接提供程序控制器服务。
我的问题是,如何从我的自定义控制器服务中的现有 cassandra 连接提供程序获取会话作为属性(或以其他方式),以便我可以使用该连接从我的自定义控制器服务编写/运行查询?
我构建了一些可以编译的东西,我认为它可以工作,但并不完全存在。
在自定义控制器服务的 pom 中,我添加了依赖项:
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-cassandra-services-api</artifactId>
<version>1.13.2</version>
</dependency>
这允许我向我的自定义控制器服务添加属性描述符:
public static final PropertyDescriptor CONNECTION_PROVIDER_SERVICE = new PropertyDescriptor.Builder()
.name("cassandra-connection-provider")
.displayName("Cassandra Connection Provider")
.description("Specifies the Cassandra connection providing controller service.")
.required(true)
.identifiesControllerService(CassandraSessionProviderService.class)
.build();
当我将自定义控制器服务添加到我的流程中时,该属性存在但为空。它没有显示我现有的 cassandra 连接提供程序作为选项,我也无法创建一个。它只是说:“没有找到适用于此属性的控制器服务类型。”
我怀疑问题与我的自定义控制器服务的属性有关,该属性需要我的项目中的 CassandraSessionProviderService.class,而不是 nifi 包中已经存在的那个,因为属性上的工具提示说它期望它来自我的项目,而现有的项目来自 nifi-cassandra-services 项目。即使我在 nifi-cassandra-services 模块上添加了第二个依赖项,它也允许我创建连接提供程序服务,但它是我项目的一个版本,而不是标准,因此它不起作用,因为它不再适用标准处理器。
我想作为一个普遍的问题,是否有可能,如果可以,我将如何正确设置依赖项以在自定义控制器服务中使用标准控制器服务包?
【问题讨论】:
标签: java maven dependencies apache-nifi