Nifi 执行进程处理器
Nifi executeprocess processor
我正在使用 executeprocess 处理器来执行 shell 脚本。但我想确保如果脚本成功执行,那么只有流程应该进入下一个处理器。有什么方法可以检查吗?
ExecuteProcess 是 运行 NiFi 之外的命令,因此确定 "success"/"failure" 是什么可能很困难。根据您在 "failure" 事件中的命令输出将改变您的流程逻辑。
首先,您可能希望将 "Redirect Error Stream" 设置为 true,以便在 FlowFile 的内容中包含错误流。然后您需要确定哪些字符系列表示 "failure"。这可能像 "ERROR" 一样简单,也可能更复杂,具体取决于您的流程。一旦确定 "failure" means/is,使用 RouteText 将其路由到内容包含这些字符的 FlowFiles。
除了 JDP10101 的回答之外,您还可以考虑使用 ExecuteStreamCommand (with a GenerateFlowFile in front of it to trigger its execution) instead. ExecuteStreamCommand writes an attribute "execution.status" that gives the exit code for the process. You could use this with RouteOnAttribute 来处理成功(大概是 execution.status == 0)和失败(execution.status != 0)
我正在使用 executeprocess 处理器来执行 shell 脚本。但我想确保如果脚本成功执行,那么只有流程应该进入下一个处理器。有什么方法可以检查吗?
ExecuteProcess 是 运行 NiFi 之外的命令,因此确定 "success"/"failure" 是什么可能很困难。根据您在 "failure" 事件中的命令输出将改变您的流程逻辑。
首先,您可能希望将 "Redirect Error Stream" 设置为 true,以便在 FlowFile 的内容中包含错误流。然后您需要确定哪些字符系列表示 "failure"。这可能像 "ERROR" 一样简单,也可能更复杂,具体取决于您的流程。一旦确定 "failure" means/is,使用 RouteText 将其路由到内容包含这些字符的 FlowFiles。
除了 JDP10101 的回答之外,您还可以考虑使用 ExecuteStreamCommand (with a GenerateFlowFile in front of it to trigger its execution) instead. ExecuteStreamCommand writes an attribute "execution.status" that gives the exit code for the process. You could use this with RouteOnAttribute 来处理成功(大概是 execution.status == 0)和失败(execution.status != 0)