提供RESTAPI:ApacheNIFI与SpringBoot
我们目前正在评估我们公司的一些开源工具,看看将来如何创建RESTAPI。 最后的候选者是ApacheNifi和Spring。我熟悉Spring,实现满足我们需求的API相对容易 然而,我不确定NiFi是否是更好的工具,甚至不确定NiFi是否被设计成纯粹用作API提供者 通常,我们的API执行以下操作:提供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
如果任何有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框架。