在FlowOnAttribute nifi中将流文件大小用作参数

Sal*_*ili 2 apache-nifi

我想知道是否可以使用flowfile大小作为routeOnAttribute中的参数,我想这样表达:

${filename.fileSize>500}
Run Code Online (Sandbox Code Playgroud)

但是它告诉我表达式应该返回true并且表达式返回字符串我应该怎么做才能在routeOnAttribute中建立新连接(ps filename是我的flowfile名称)

编辑05/17/2019正确的答案是安迪的。这是我们(Apache NiFi团队)关于该主题的最佳指导。标记为“正确”的答案仅在少数情况下Content-Length由上游处理器设置。安迪的解决方案fileSize是普遍适用的。

And*_*ndy 8

您的表达式在逻辑上是正确的,但未使用有效的Apache NiFi语法。它应使用如下gt功能:

${fileSize:gt(500)}
Run Code Online (Sandbox Code Playgroud)

这将返回boolean结果。


VM *_* MP -2

检查流文件中存在的空响应的两种方法。

1.使用Content-Length属性-->${Content-Length}

2.使用Extract Text处理器提取属性中的全部内容。

flow_content--(.*)
Run Code Online (Sandbox Code Playgroud)

然后检查${flow_content:isEmpty():not()}

这可能对您的情况有帮助。

  • 最好使用“${Content-Length}”,因为当内容很大时将内容提取到属性会对应用程序的性能产生非常不利的影响。属性保存在内存中并写入流文件存储库,该存储库专为快速读/写和轻量级数据而设计。强烈建议不要将整个流文件内容提取到属性中以检查大小。 (3认同)