我有以下两种情况,对于每种情况,我都需要建议使用哪种 NiFi 处理器:
我有在 NiFi 之外运行的 Restful Web 服务。NiFi 想通过调用特定的restful API 来获取/发布/删除/更新一些数据。一旦 Restful API 收到来自 NiFi 的请求,它就会将响应发送回 NiFi。在这里使用哪个 NiFi 处理器?
在第二种情况下,我有一个在 NiFi 之外运行的应用程序。此应用程序有自己的 GUI。用户需要一些信息,所以他想向 NiFi 发送请求。在 NiFi 中,是否有任何处理器可以接受来自应用程序的请求,处理请求并返回响应?
我实际上使用 getHTTP 和 invokeHTTP 阅读了所有问题。
我最初尝试使用 invokeHTTP 处理器。我使用 invokeHTTP 尝试了 get 和 post 调用。但是我没有看到在 NiFi 之外运行的 Restful API 的任何响应。
我没有尝试 getHTTP。
我正在使用 NiFi。NiFi 没有代码。
我希望 NiFi 应该能够调用在外面运行的 Restful API。我希望 NiFi 应该接受来自外部运行的应用程序的请求并处理该请求。
是的,NiFi 捆绑了可以满足您这两个要求的处理器。
对于场景 #1,您可以使用GetHTTP
/的组合,PostHTTP
顾名思义,它们是分别发起GET
和POST
调用的HTTP 客户端。但是,后来社区提出了InvokeHTTP
更多功能,例如支持 NiFi 表达式语言、支持传入流文件等,
对于场景 #2,您可以使用ListenHTTP
或组合HandleHttpRequest
/ HandleHttpResponse
。后者确实为您提供了更强大的 Web 服务实现,而前者是一种简单的 Web 钩子类型。我没有太多工作,ListenHTTP
所以可能无法对此发表更多评论。
话虽如此,对于您的第二个场景,如果您的目标是使用 NiFi 统计信息,您可以直接点击 NiFi 的 rest api,而不是拥有单独的具有 Web 服务能力的 NiFi 流。
有用的链接