Nifi执行处理器

3
我正在使用executeprocess处理器来执行shell脚本。但我希望确保只有在脚本成功执行后,流程才能进入下一个处理器。有没有办法检查这个?
2个回答

6
除了JDP10101的回答外,您还可以考虑使用ExecuteStreamCommand(在其前面加上GenerateFlowFile来触发执行),而不是使用Processors。ExecuteStreamCommand会写入一个名为“execution.status”的属性,用于给出该进程的退出代码。您可以使用RouteOnAttribute与之配合处理成功情况(假定execution.status == 0)和失败情况(execution.status != 0)。请参考ExecuteStreamCommandRouteOnAttribute

2

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接