【问题标题】:Nifi executeprocess processorNifi执行进程处理器
【发布时间】:2026-01-09 23:05:01
【问题描述】:

我正在使用 executeprocess 处理器来执行 shell 脚本。但我想确保如果脚本成功执行,那么只有流应该进入下一个处理器。有什么方法可以检查吗?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    除了 JDP10101 的答案之外,您还可以考虑使用 ExecuteStreamCommand(在其前面使用 GenerateFlowFile 来触发其执行)。 ExecuteStreamCommand 写入一个属性“execution.status”,该属性给出进程的退出代码。您可以将其与RouteOnAttribute 一起使用来处理成功(可能是 execution.status == 0)和失败(execution.status != 0)

    【讨论】:

      【解决方案2】:

      ExecuteProcess 在 NiFi 之外运行命令,因此确定“成功”/“失败”是什么可能很困难。根据您的命令在“失败”事件中输出的内容将改变您的流程逻辑。

      首先,您可能需要将“重定向错误流”设置为 true,以便在 FlowFile 的内容中包含错误流。然后您需要确定哪些字符系列表示“失败”。这可能与“错误”一样简单,也可能更复杂,具体取决于您的流程。一旦确定“失败”的含义/是什么,请使用 RouteText 将其路由到内容包含这些字符的 FlowFiles。

      【讨论】: