8

I want to know if is it possible to use flowfile size as an argument in routeOnAttribute i want to make expression like that :

${filename.fileSize>500}

but it tells me that expression ought to return true and my expression returns string what should i do to be able to make new connection in routeOnAttribute(p.s filename is my flowfile name)

EDIT 05/17/2019 Correct answer is Andy's. That is the best guidance from us (Apache NiFi team) on the subject. The answer marked "correct" only applies in a few cases where Content-Length is set by an upstream processor. Andy's solution, fileSize is universally applicable.

Mike Thomsen
  • 36,828
  • 10
  • 60
  • 83
Sagitarius
  • 348
  • 1
  • 11
  • 36

3 Answers3

21

Your expression is logically correct but does not use valid Apache NiFi syntax. It should use the gt function as below:

${fileSize:gt(500)}

This will return a boolean result.

Andy
  • 13,916
  • 1
  • 36
  • 78
0

On the RouteOnAttribute, you can configure an attribute whose value evaluates to true when flowfile content is of certain size.

enter image description here

Vijay Kumar
  • 2,439
  • 2
  • 32
  • 51
-2

Two ways to check empty response present in flowfile.

1.Using Content-Length attribute-->${Content-Length}

2.Using Extract Text processor to extracts entire content in attribute.

flow_content--(.*)

then check ${flow_content:isEmpty():not()}

It may be helpful for your case.

Mister X
  • 3,406
  • 3
  • 31
  • 72
  • 3
    It is far preferable to use `${Content-Length}` because extracting the content to an attribute when the content is large will have a very detrimental effect on the performance of the application. Attributes are held in memory and written to the flowfile repository, which is designed for fast read/write and lightweight data. It is highly discouraged to extract the entire flowfile contents to an attribute just to check the size. – Andy Aug 24 '17 at 18:55