何ができるか

割と名前通り、Content というか FlowFile をマージすることができる。
それは直前で split していてもしていなくても構わない。

どんなときに使うか

やっぱりこのプロセッサの前に splitJson 等、FlowFIle を分割した後など。
特に API として NiFi を運用するのであれば、レスポンスとして返せるのは1リクエストにつき1レスポンスなので、NiFi の中で分割後処理を行いたい場合は必ずこの MergeContent を入れてあげる必要がある。
※勿論私が知らないだけで色々な使い方があると思われるが。

どう使うか

使用タイミングは前述の通り。
各種プロパティは以下の通り。

Merge Strategy

選択肢は以下2つ。
・Bin-Packing Algorithm
簡単に言えば来たものを全てマージする設定。
例えば後述する Defragment のように共通する ID を持ってマージするのではなく、設定に応じた件数やサイズを考慮の元にマージを行う。初期値。

・Defragment
Attribute に格納された各種値を元にどの FlowFile と、どの FlowFile をマージするか、何件が対象となるかなどを判断する。
例えば splitJson で FlowFile を分割すると fragment.identifier という Attribute が生成される。
これは分割した FlowFile 全てで共通のIDとなっており、この値が一致するものしかマージを行わない。

Merge Format

以下の設定があるが、正直よくわからない。
・TAR
・ZIP
・FlowFile Stream, v3
・FlowFile Stream, v2
・FlowFile Tar, v1
・Binary Concatenation
・Avro

初期値は Binary Concatenation 。実際のところ中身はどういう処理を行っているかはわからないが、初期値のままなら Content に含まれている文字列を MergeContent に格納される順にただただ後ろに追加されていく。勿論その際に区切り文字を設定するなど他のプロパティで設定可能。
例:flowfile1 - {hogehoge}, flowfile2 - {higehige}, flowfile3 - {hagehage}
→ {hogehoge}{higehige}{hagehage}

Attribute Strategy

マージするときに Attribute をどうするかを決めることができる。
・Keep Only Common Attributes
共通の Attribute のみ継続して持つ。

・Keep All Unique Attributes
全ての Attribute をもつ。
※後日ちょっと試してみる。

後は後日。