是否可以按某种条件查询处理器然后将其全部关闭

时间:2019-07-26 13:57:51

标签: apache-nifi

我们添加了许多用于调试的处理器。它们被命名为“ DebugFlow”。几天前,一些人右键单击画布并单击开始。这一定已经启动了所有处理器组内部的某些DebugFlow处理器。 (大多数情况下,我们禁用所有这些处理器,但是其中一些处理器可能仍处于启用状态)现在我们要停止所有处理器。当我在Nifi搜索框中搜索DebugFlow时,它会填充巨大的下拉列表。我可以一一去找他们,然后关掉它们。但是这个清单确实很大。我正在猜测是否有任何方法可以搜索名称为“ DebugFlow”的所有正在运行的处理器并停止它们,类似于下面的伪sql之类的单词:

UPDATE Processor SET state="stopped" WHERE state="running" and name="DebugFlow"

1 个答案:

答案 0 :(得分:1)

您绝对可以使用多种工具来自动化此操作:

  1. 使用简单的Python / Ruby / Groovy / Bash脚本调用NiFi query API (GET /flow/search-results)以返回所有DebugFlow处理器的列表,然后对其进行迭代,将它们的状态设置为 stopped (并根据需要将其禁用),通过该语言或curl使用HTTP调用。
  2. 使用NiPyAPI tool在Python中执行此操作,从而获得更高级别的功能。
  3. 使用NiFi CLI tool在可编写脚本或交互式DSL中执行此操作,从而获得更高级别的功能。

一般的经验法则是,通过UI在NiFi中进行的所有操作也都可以通过API进行(因为UI是API客户端的参考实现),因此您始终可以打开浏览器的开发者工具并查看手动执行所需操作时将进行哪些HTTP调用,然后将其复制到可重复脚本中。