Delayノードを使う(その2)
ここのところずっと Node-RED のサンプルを見ながら各ノードの使い方を確認しています。 頭出しの記事はこちら をご確認ください。今回も 前回 に引き続きDelayノードを使ってみます。 遅延中に中断・即時実行する 最初のサンプルは「 flows > node-red > function > delay > 03 - Reset or flush pending message 」です。resetということは遅延中に中断ができるようです。flushというのはトイレの水を流すアレですね。 「 Hello World! 」を実行すると、1分間の遅延を経てログ「 Goodbye, World! 」を出力します。遅延中に reset を実行すると、中断しそれ以降のフローは実行されません。一方、遅延中に flush を実行すると、遅延が即時実行されます。冒頭で書いたとおり、トイレの水を流すイメージです。ポイントとしては「 msg.reset 」や「 msg.flush 」に「 true 」を設定してDelayノードに流し込むと、制御できる点です。resetはJavaScriptで言うところの clearTimeout()関数 的な位置付けですかね。 ちなみに、「Hello World!」Injectノードを連打して、遅延中にflushすると溜まっていいたフローが一気にまとめて実行されます。別の処理を待ちたいけど、フロー終了する際に全部終わるの待ってらんない、ってときにresetやflushして即時終了させる、みたいな用途で使うのかもしれません。 メッセージの実行速度を制限する 次のサンプルは「 flows > node-red > function > delay > 04 - Limit message rate 」です。実行速度を制御できるようです。 フローの頭から順番に見ていきます。まずはInjectノードから。msg.payloadに0〜9の数字を要素に持つ配列をJSON形式で設定しています。 続いてSplitノード。msg.payloadの配列を固定長1で分割してそれぞれmsg.payloadに設定してフローを流す、ということになるみたいです。これでSplitノードの出力ポートから10個のmsgオブジェ...