EventGridTrigger/SpringBatch

Azure Functions上でSpring Batchを利用しているプログラムで処理単位(Tasklet)を複数つないでみた

これまでこのブログでは、1つの処理単位(Tasklet)のみを扱ってきたが、複数の処理単位を順次実行することもできる。

今回は、EventGridTriggerを利用して、BlobにCSVファイルが作成されたタイミングで、そのCSVファイルをDBに書き込む処理を実行した後で、ログ出力する処理単位(Tasklet)を実行してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事のサンプルプログラムを作成済で、EventGridTriggerTestHandler.javaは、EventGridのCSVをDBに書き込む処理を残した状態になっていること。

EventGridTriggerを利用したプログラムをローカル環境で動かしてみた前回は、EventGridTriggerを利用して、BlobにCSVファイルが作成されたタイミングで、そのCSVファイルをDBに書き込む...

また、以下の記事のPostmanをインストール済であること。

POSTメソッドでリクエストされるAzure FunctionsのAPIをPostmanによって呼び出してみたAzure App Serviceを利用せずに、HTTPトリガーによって呼び出されるAzure Functionsの動作確認を行うには、...



作成したサンプルプログラムの修正

前提条件の記事のサンプルプログラムに、ログ出力する処理単位(Tasklet)を追加する。なお、下記の赤枠は、前提条件のプログラムから変更・追加したプログラムである。
サンプルプログラムの構成

新しく追加したログ出力する処理単位(Tasklet)を定義したクラスは、以下の通り。

また、新しく追加したログ出力する処理単位(Tasklet)を追加したジョブ定義クラスは以下の通りで、ジョブを定義するjobメソッドで、CSVファイルをDBに書き込む処理単位(step)を実行した後で、ログ出力する処理単位(stepLog)を呼び出すようにしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/event-grid-trigger-multi-tasklet/demoAzureFunc



サンプルプログラムの実行結果

以下の記事の「EventGridのローカル環境での実行」に記載した通りに実行する。

EventGridTriggerを利用したプログラムをローカル環境で動かしてみた前回は、EventGridTriggerを利用して、BlobにCSVファイルが作成されたタイミングで、そのCSVファイルをDBに書き込む...

実行した結果のログは以下の通りで、CSVファイルをDBに書き込むDemoTaskletクラスの処理を実行した後で、ログ出力するDemoTaskletLogクラスの処理が実行されたことが確認できる。
サンプルプログラムの実行結果

要点まとめ

  • Spring Batchを利用しているプログラムで処理単位(Tasklet)を複数つなぐ処理は、Spring Batchのジョブ定義クラスで定義することができる。