Batchノードを使う(その1)
ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回はBatchノードの第一回目です。
確認するサンプルは、「読み込み > サンプル > flows > node-red > sequence > batch > 01 - Number based group mode」です。サンプルを見る限りBatchノードを利用すると指定した条件ごとにメッセージをグループ化できるようです。「グループ化」って言葉だけを見ても何をするのか想像がつきませんが、「メッセージにpartsプロパティを付加する」のがより詳細な挙動の説明になると理解しました。複数のメッセージをまとめるのはJoinノードが実施しますが、そのJoinノードが動くために、複数のメッセージに同じpartsプロパティを付与するのがBatchノードの役割です。
バラバラのメッセージを指定した数ずつまとめる
最初に確認するのは1段目です。ざっくりとした流れは以下のとおりです。
- Functionノードがバラバラのメッセージを送信する
- Batchノードが指定した数ごとにグループ化(partsプロパティに自動生成した値を設定)する
- Joinノードが同じpartsプロパティの値ごとに1つのメッセージにまとめる
上流から順にノードの設定を見ていきます。入力データを生成するFunctionノードでは、0〜29の値をPayloadに持つメッセージを送信しています。
続いて、Batchノードで指定したメッセージ数ごとにグループ化します。
続いて、Joinノードで複数メッセージをまとめます。動作が自動なので、partsプロパティの値ごとにまとめます。
実行すると、以下のログが出力されます。5ずつまとめられていますね。なお、Batchノードの出力にDebugノードをつなげて出力メッセージ全体を確認するとpartsプロパティに自動生成した値が設定されているのが確認できるはずです。
要素をオーバーラップする
Batchノードでは、グループ化する要素を一部オーバーラップさせることができます。この説明だけで伝わると思えないので詳しく説明します。確認するサンプルは2段目です。基本的な流れは一つ前のサンプルと同じで、違うのはBatchノードのオーバーラップ設定のみです。
まとめ
まとめます。
- Batchノードを利用することでメッセージをグループ化できます
- Batchノードは単にmsg.partsプロパティに値を付与するだけです
- メッセージをまとめるのはJoinノードがやります
- 要素をオーバーラップさせることができます
Batchノードシリーズはもう少し続きます。
コメント
コメントを投稿