提供RESTAPI:ApacheNIFI与SpringBoot

提供RESTAPI:ApacheNIFI与SpringBoot,spring,rest,apache-nifi,api-design,Spring,Rest,Apache Nifi,Api Design,我们目前正在评估我们公司的一些开源工具,看看将来如何创建RESTAPI。 最后的候选者是ApacheNifi和Spring。我熟悉Spring,实现满足我们需求的API相对容易 然而,我不确定NiFi是否是更好的工具,甚至不确定NiFi是否被设计成纯粹用作API提供者 通常,我们的API执行以下操作: 解析JSON负载/输入参数(负载上有时非常复杂的XQuery内容) 将这些信息发送到主逻辑所在的Oracle DB函数 解析Oracle输出并发送适当的HTTP响应 如果任何有NiFi或Sprin

我们目前正在评估我们公司的一些开源工具,看看将来如何创建RESTAPI。 最后的候选者是ApacheNifi和Spring。我熟悉Spring,实现满足我们需求的API相对容易

然而,我不确定NiFi是否是更好的工具,甚至不确定NiFi是否被设计成纯粹用作API提供者

通常,我们的API执行以下操作:

  • 解析JSON负载/输入参数(负载上有时非常复杂的XQuery内容)
  • 将这些信息发送到主逻辑所在的Oracle DB函数
  • 解析Oracle输出并发送适当的HTTP响应

  • 如果任何有NiFi或Spring经验(或两者兼有)的人对这里更好的选择有更多的见解,我将不胜感激。提前谢谢

    我也会选择基于spring框架的方法。Nifi更像是一个类似ETL的工具

    Nifi不是专门为创建RESTful API而设计的,但是没有理由不能在Nifi中实现这一点。毕竟,您描述的用例基本上只是移动数据<代码>发送数据有效负载->分析数据->发送到oracle->响应

    您可以使用NiFI
    HandleHTTPRequest
    HandleHTTPResponse
    处理器构建复杂的HTTP处理逻辑

    您可以在NiFi中轻松使用JSON;可以将记录的概念与
    jsonterereader
    一起使用,也可以使用类似于
    jolttransfermjson
    的内容

    您可以使用
    DBCPConnectionPool
    与数据库(包括Oracle)进行交互,然后使用
    PutSQL
    ExecuteSQL
    QueryDatabaseTable
    (以及相应的记录变量,例如
    ExecuteSQLRecord
    )运行SQL

    您还将获得NiFi开箱即用的一些好处,例如容错、集群、向外扩展、可见性、沿袭等

    NiFi是一种无代码的方法,因此它与开发Spring应用程序的体验截然不同。您需要学习NiFi的应做和不应做的事情,如何正确地构造流,如何进行扩展,等等。您还可以通过自定义开发扩展NiFi,但您必须学习NiFi结构和API

    显然,您也可以通过Spring实现所有这一切;如果您的需求非常简单(您不需要向外扩展,也不需要保证容错性等),或者如果您的API将扩展到比本文描述的更广泛的用例中,那么可能会更容易,因为您已经有了Spring经验


    还有其他考虑;如何进行版本控制(NiFi有NiFi注册表)、外部依赖项(NiFi需要ZooKeeper)、开销(NiFi有用于构建流的UI)、部署(NiFi磁盘对存储库的要求、操作系统支持等)、管理/支持(如果有问题,您是否愿意支持NiFi/Registry/ZooKeeper)、升级等。

    @McLovin,我喜欢这个名字

    作为NiFi的长期用户,我与几家大型企业一起生产NiFi API。我也有使用Spring的经验,可以欣赏这两种方法。
    然而,在我看来,NIFI的第一个限定词是我自己,或者我正在培训的交付人员,不必编写任何代码。这太棒了!!我还喜欢在NiFi中设置入站端口的功能,它可以根据我的流逻辑接受任何内容或允许或拒绝请求,我可以随时更改这些逻辑。我可以在流处于活动状态时修改它。我可以添加更多的逻辑,而它是活的。我可以捕获异常,发送通知,并内置请求重播功能


    我绝对会选择NiFi而不是Spring来创建可伸缩的API。

    粗略地说,ApacheNIFI用于自动化系统之间的数据流。我认为企业集成模式对于它试图解决的问题是一个很好的解读。Spring是框架的总称,它做了很多事情,包括公开RESTAPI。根据您的用例,我会选择Spring框架。