当前位置: 首页 > 知识库问答 >
问题:

Nifi工件可见性/依赖性管理

冀永寿
2023-03-14
  • 我有自html" target="_blank">定义缓存控制器服务-CustomCacheService
    • groupid-com.example.service
    • Artifactid-CustomCacheService
    • groupid-com.example.processor
    • Artifactid-QueryCustomCache
    • groupid-com.example.processor
    • artifactid-loadcustomcache

    第一个问题是在处理器的GUI列表中重复标准工件:由于两个处理器都必须向CustomCacheService导入依赖项,因此它们都需要-nar pom.xml中的这种依赖项

    <dependency>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-standard-services-api-nar</artifactId>
        <type>nar</type>
    </dependency>
        
    

    如果没有这个依赖项,构建将失败,并出现错误:创建扩展文档失败一旦我添加了这个依赖项,就会为两个处理器创建标准nifi工件的副本。重复工件的捆绑ID是处理器groupid-artifact(com.example.processor-querycustomcache/loadcustomcache)和版本是我的项目版本(例如:1.0.0-snapshot),Nifi在它们的代码中都导入了这种依赖关系,显然不会导致重复工件。

    第二个也是更重要的问题是,我不能在处理器之间共享CustomCacheService。一旦我将服务依赖项导入到两个处理器并将其加载到nifi中,在服务列表中,我将为该服务提供三个绑定选项:

    • CustomCacheService:com.example.processor.queryCustomCache-1.0.0-Snapshot
    • CustomCacheService:com.example.processor.loadCustomCache-1.0.0-Snapshot
    • customcacheService:com.example.service.customcacheService-1.0.0-snapshot

    每个处理器都希望从它自己的包中获得一个服务实例。QueryCustomCache处理器需要来自com.example.processor.QueryCustomCache的服务实例,但看不到任何其他实例。LoadCustomCache处理器也是如此。这使得我无法为两个处理器使用相同的CustomCacheService实例。我希望能够创建绑定id为com.example.service.CustomCacheService的CustomCacheService实例,并在两个处理器中使用它。

    这两个问题密切相关。我的依赖项的组织与nifi源代码中的相同。

共有1个答案

姬昊焱
2023-03-14

很好地解释了你的情况:

https://docs.cloudera.com/hdpdocuments/hdf3/hdf-3.0.1/bk_developer-guide/content/nars.html

注意manifest.mf中的nar-dependency-id元素

 类似资料:
  • 问题内容: 我在应用程序中使用Webpack,在其中创建两个入口点- 所有我的JavaScript文件/代码的bundle.js,以及所有库(如jQuery和React)的vendor.js。为了使用以jQuery为依赖项的插件,并且我也希望在vendor.js中使用它们,我该怎么做?如果这些插件具有多个依赖项怎么办? 目前,我正在尝试在此处使用此jQuery插件-https: //github.

  • 问题内容: 在玩了Intellij IDEA插件一段时间后,我注意到具有外部依赖项的插件可以很好地工作,即使这些依赖项未与插件本身捆绑在一起,也未在任何地方公开声明。 挑选一个随机的例子:GenerateToString插件尤其取决于log4j。但是,如果您查看jar文件的内部,您将看到它仅包含其自己的类以及一些资源(图像和html文件)和元数据(强制性plugin.xml和MANIFEST.MF

  • 问题内容: 我有一个Java程序,其中有Maven管理其依赖项。这些依赖项之一是另一个程序的JNI包装器。Maven负责对相关JAR文件的引用,但我自己却在弄乱DLL文件。 是否有让Maven处理DLL的好方法?理想情况下,我希望将DLL加载到我们的本地存储库中,例如JAR文件。 问题答案: 您是否尝试过这样的事情: 您可以使用以下方法将它们添加到Maven的存储库中: 尚未针对DLL执行此操作,

  • 问题内容: 在Golang中,我们可以将GitHub上的开源库指定为依赖项。例如: 如果我理解正确,这将尝试根据您的Go版本查找分支,默认为master。 因此,无法导入依赖的特定版本,例如: 那么,在Go中管理依赖项的最佳实践是什么? 我可以看到两种方法。 I.版本模块 是否为具有重大变更的主要版本创建新模块? 例如,我的Go库可以定义模块v1和v2,因此您可以执行以下操作: 要么: 根据您的需

  • 构建一个Java /Groovy项目,各种任务,如编译Java、编译Groovy、测试等,需要各种jar工件,如果您正确定义了该任务的每个区域所需的内容,Gradle会提供这些工件。 我将这些应用于构建脚本(build.gradle ),一切正常。 我正在处理的另一个项目不仅需要jar rtifacts,还需要一个.xml文件作为进行JIBX / XSLT转换/处理的工件。 我的简单问题: - G

  • 1. 基于HTML5标准,无插件,跨平台  2. 无法独立运行,依赖于浏览器 3. 浏览器基于HTTP协议,所以Cesium要正确运行必须有HTTP Server 4. HTTP Server的实现不限于开发语言和服务器