Joinノードを使う(その2)
ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回はJoinノードの2回目です。
確認するサンプルは、「読み込み > サンプル > flows > node-red > sequence > join > 02 - Manual join mode」です。今度は「手動モード」だそうです。7つのフローから構成されています。ちょっと多すぎですが、それだけいろいろな使い方ができるのだと思います。
指定した個数のメッセージごとに結合する
一番上の段は、指定した個数のメッセージごと結合するサンプルです。左側のTemplateノードから設定を見ていきます。ここでは「msg.payload」に改行区切りの文字列を指定しています。
続いて、その右側にあるSplitノードです。msg.payloadには文字列が格納されているので、改行(\n)ごとに個別のmsgオブジェクトに分割します。今回の場合、4つのメッセージに分割されます。
続いて、Joinノードは以下のように設定されています。
たくさん設定が見えますが、以下の条件でメッセージを結合して送信するようです。
- 結合対象の入力メッセージのプロパティは「msg.playload」
- 出力はカンマ(,)区切りの文字列
- msgオブジェクトを2つ受け取るか「msg.complete」プロパティが設定されたメッセージを受信したタイミングで送信
実行すると、4つに分割されていたであろうメッセージが以下のように2つに結合されています。
指定した時間内に受信したメッセージを結合する
2段目のフローでは、指定した時間内に届いたメッセージを結合します。例によって左から順に設定を見ていきます。TemplateノードとSplitノードは上述のサンプルと同じなので省略します。
これを実行すると、最初に紹介したフロー同じようなログが出力されますが、2件出力されるログのタイムスタンプが2秒空いています。Joinノードから2秒毎に結合されたメッセージが出力されたことがわかります。
まとめ
まだまだ先は長そうなので、このへんで一旦まとめておきます。
- Joinノードの手動モードは以下の条件でメッセージを結合して出力できます。
- 指定した個数のメッセージごと
- 指定した時間内に受信したメッセージごと
- 文字列結合する場合、区切り文字を指定できる
- 結合対象のプロパティを指定できる
Joinノードシリーズはもう少し続きます。
コメント
コメントを投稿