Apache nifi 在RouteOnAttribute nifi中使用流文件大小作为参数

Apache nifi 在RouteOnAttribute nifi中使用流文件大小作为参数,apache-nifi,Apache Nifi,我想知道是否可以在routeOnAttribute中使用flowfile size作为参数我想使表达式如下所示: ${filename.fileSize>500} 但它告诉我表达式应该返回true,我的表达式返回string我应该怎么做才能在routeOnAttribute中建立新连接(p.s filename是我的流文件名) 编辑2019年5月17日正确答案是安迪的。这是我们(ApacheNIFI团队)在这个问题上的最佳指导。标记为“正确”的答案仅适用于上游处理器设置内容长度的少数情况

我想知道是否可以在routeOnAttribute中使用flowfile size作为参数我想使表达式如下所示:

${filename.fileSize>500}
但它告诉我表达式应该返回true,我的表达式返回string我应该怎么做才能在routeOnAttribute中建立新连接(p.s filename是我的流文件名)


编辑2019年5月17日正确答案是安迪的。这是我们(ApacheNIFI团队)在这个问题上的最佳指导。标记为“正确”的答案仅适用于上游处理器设置内容长度的少数情况。Andy的解决方案,
fileSize
普遍适用。

检查flowfile中存在的空响应的两种方法

1.使用内容长度属性-->
${Content Length}

2.使用提取文本处理器提取属性中的全部内容

flow_content--(.*)
然后选中
${flow\u content:isEmpty():not()}


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

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

${fileSize:gt(500)}

这将返回一个
boolean
结果

为什么要比较文件大小?.FileSize不是您使用的属性。我想检查flowfile大小是否小于500(这意味着响应为空),我可以与emty response建立连接,然后记录它。我应该使用conetn size而不是size吗?我的意思是内容长度是的,你可以使用${content Length}好的,谢谢你,我这样做${content Length:toNumber():divide(500):equals(1)}使用
${content Length}更好
因为当内容较大时将内容提取到属性会对应用程序的性能产生非常有害的影响。属性保存在内存中并写入flowfile存储库,该存储库专为快速读/写和轻量级数据而设计。强烈不建议仅为了检查大小而将整个flowfile内容提取到属性。