如何清除 NiFi 队列?

How to clear NiFi queues?

我们正在 NiFi 中创建一些流程,在某些情况下,队列正在建立,但由于某种原因,流程无法按预期工作。

归根结底,我想清空队列并以某种方式使其自动化。问题是我们如何从后端删除队列?有什么办法可以实现吗?

在 Apache NiFi UI 中,如果您右键单击队列,可以选择清空队列。您可以在 UI 中执行的任何操作均由 REST 服务支持,因此请查看 REST API 文档:

https://nifi.apache.org/docs/nifi-docs/rest-api/index.html

特别是 POST 到 /flowfile-queues/{id}/drop-requests。

您还可以使用 Chrome 并在使用该应用程序时打开开发者工具,以查看在您执行某些操作时它对 REST API 进行了哪些调用。

除了 Bryan 提到的显式 "Drop Queue" 功能之外,您可能感兴趣的其他几个功能是连接上的 "Back Pressure" 和 "FlowFile Expiration" 设置。这些允许您自动控制任何给定连接中的数据量。下面是每个的简单解释,但要获得更详细的解释,我建议您参考 Apache NiFi User Guide

背压:当队列达到一定大小时,停止触发为其提供数据的处理器。

FlowFile 到期:一旦 FlowFile 在队列中花费了 X 时间,它将被丢弃。