HandleHTTPRequest 处理器在 nifi 中创建重复的输出流文件

Sid*_*Sid 5 apache-nifi

?嗨,我已经在一个独立的 nifi 实例上创建了 handlehttprequest 处理器,该实例是计时器驱动的,并发任务设置为 1,运行计划为 0。我正在通过邮递员或任何浏览器的请求访问我的 Web 服务。处理器的输出队列最初只有一个条目,但大约一分钟后变为 2。我在单个节点和集群 nifi 实例上都看到过这个问题。有人可以指点一下吗

尼菲版本:1.7.0

更新 1:我观察到,如果在特定时间内未到达 http 响应流,则会生成具有相同参数的新 http 请求。这是预期的吗?,如果是,我该如何避免这种情况?

更新 2:我们已经看到第二个流文件在 60 秒后生成。不确定哪个配置设置了这个。

更新 3:我刚刚看到我们使用的 StandardHttpContextMap 有一个属性:Request Expiration,默认设置为 1 分钟。该文档指出“指定在从缓存中逐出并使用服务不可用状态代码响应之前,HTTP 请求应保持多长时间未得到答复”。如果我增加这个值,我可以看到我没有看到任何其他重复的值。所以现在我知道为什么会发生这种情况,但不确定为什么会这样。为什么我在转发队列中得到另一个条目。

Asa*_*aya 3

您缺少HandleHttpResponse处理器。从HandleHttpRequest处理器读取请求后,您必须将响应发送回客户端(在本例中为邮递员)。如果邮递员在 60 秒内没有收到任何响应,它将因超时而重试。

请参阅我构建的此流程。

在此输入图像描述

HandleHttpResponse处理器的成功队列将具有相同的流文件。有时您可能需要在将响应发送给客户端之前执行某些操作。在这种情况下,请勿将HandleHttpResponse处理器直接连接到HandleHttpRequest处理器。完成操作后,请确保在超时之前使用 HandleHttpResponse 处理器将响应发送到客户端。