我正在玩NiFi自定义处理器。
如何将org.apache.nifi.web.StandardNiFiServiceFacade
的实例注入到自定义处理器实例中?
背景:
我正在尝试实现在处理器执行后停止处理器的目标。我了解nifi处理器仅用于流处理,而不用于批处理,在批处理中,我们仅执行一次工作。但是要利用NiFi执行支持,需要这样做。如进一步实验所示,我将能够使用定制处理器实例中可用的StandardNiFiServiceFacade
实例来完成此操作。
答案 0 :(得分:6)
这不是故意提供给处理器API的。如果确定要让处理器告诉控制器停止调度,则可以像对用户界面或程序化API调用那样对API进行HTTP / REST API调用。
但是,处理器永远不要这样做。它们要么计划执行,要么不计划执行。如果不再需要执行某些功能的条件,则处理器可以检查这些条件并将其在触发调用时短路,然后简单地返回。如果存在执行某些功能的条件,则可以运行它们。
答案 1 :(得分:2)
如果要从上游处理器(如GenerateFlowFile)触发此自定义处理器,则可以利用ExecuteScript模拟“一次完成”的作业触发器,请查看my blog post中的Groovy脚本),可能会帮助您实现自己的目标。