前説
Lambdaでの開発を、それなりの本数開発してると、欲しくなってくるパターンの処理が、非同期の多重度を設定変更可能な処理である。
- S3にCSVファイルをアップロードしたトリガーで、全ての行をDynamoDBに登録
- SQSに格納されてるメッセージを一定数取り出してFirehoseに流し込む
- SQSに格納されてるメッセージを外部のクラウドAPIに流し込む
などなど、、、
いわゆるjavaで言う所のマルチスレッドのような処理をNode.jsでしたくなるシチュエーションが往々にしてある。
という訳で、次回のサンプルソースは、「N件データを多重度を指定して非同期に1件ずつ処理をする。」にしようと思う。
概要
文章だけだと分かりにくいので、下記の図を見てください。
Node.jsはシングルスレッド処理なので、あくまでも疑似的な処理順序のイメージです。
非同期で外部APIなどを呼ぶのは良いのだけど、メモリ内で処理できる物は処理を効率的に進めたい。と考えました。
推奨URL/参考文献
本基底処理を制作するに辺り、非常に勉強させて貰いました。(後日公開)
[JavaScript] 非同期処理のコールバック地獄から抜け出す方法
https://qiita.com/LightSpeedC/items/7980a6e790d6cb2d6dad
ES2017 async/await + Promise で解決できる事、とES2015(ES6) generators (yield) + Promise + npm aa (async-await) で解決できる事
https://qiita.com/LightSpeedC/items/95e3db59276e5d1d1a0d