TimerTrigger/SpringBatch

TimerTriggerイベントが発生するタイミングを環境変数で設定してみた

これまでは、TimerTriggerイベントが発生するタイミングを、Javaのソースコード内で直接指定してきたが、この指定は環境変数で設定することもできる。

今回は、TimerTriggerイベントが発生するタイミングを環境変数で設定してみたので、共有する。

前提条件

下記記事のNCRONTAB式のタイムゾーン変更が完了していること。

TimerTriggerによって動作するAzure Functionsの関数を日本時間の指定した時刻に実行してみたTimerTriggerによって動作するAzure Functionsの、TimerTriggerイベントの発生タイミングは、以下のサイ...

環境変数の設定

ローカル環境でTimerTriggerイベントの動作検証を行うために、環境変数の値を設定する。以下では、環境変数「ScheduleAppSetting」に、1分毎にTimerTriggerイベントが発生するスケジュールを設定している。
環境変数の設定

なお、環境変数の設定方法は、以下のサイトを参照のこと。
https://www.scc-kk.co.jp/scc-books/java8_workbook/java_dev-win10.html

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

前提条件の記事で利用しているサンプルプログラムを、TimerTriggerイベントが発生するタイミングを環境変数から取得するように修正する。なお、下記の赤枠は、前提条件の記事で利用しているプログラムから変更した箇所を示している。
サンプルプログラムの構成

修正したTimerTriggerイベントが発生したタイミングで呼ばれるハンドラークラスの内容は以下の通りで、TimerTriggerイベントが発生するタイミングを「ScheduleAppSetting」から取得するように修正している。

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



サンプルプログラムの実行結果(ローカル)

「mvn azure-functions:run」で実行した結果は以下の通りで、赤枠のログを確認すると、1分毎にTimerTriggerイベントが発生していることが確認できる。
サンプルプログラムの実行結果(ローカル)

なお、ローカル環境でのデプロイ・実行方法については、以下の記事の「サンプルプログラムの実行結果(ローカル)」を参照のこと。

Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を作成してみたこれまでは、HTTPリクエストによりAzure Functionsが動作するアプリケーションのみ作成してきたが、Timer Trigge...

ScheduleAppSettingの設定追加(Azure上)

ScheduleAppSettingの設定追加は、Azure Portal上で実行できる。その手順は、以下の通り。

1) Azure Functionsの概要を表示した状態で、「構成」メニューを押下する。
Azure上の環境変数設定_1

2) ScheduleAppSettingの設定を追加するため、「新しいアプリケーション設定」ボタンを押下する。
Azure上の環境変数設定_2

3) 名前に「ScheduleAppSetting」、値にTimerTriggerの起動タイミングを指定し、「OK」ボタンを押下する。
Azure上の環境変数設定_3

4) 以下のように、名前が「ScheduleAppSetting」であるアプリケーション設定が追加されていることが確認できるので、「非表示の値です。値を表示するには、クリックしてください」のリンクを押下する。
Azure上の環境変数設定_4

5) 名前が「ScheduleAppSetting」の値に、指定した値に設定されていることが確認できる。ここで「保存」ボタンを押下する。
Azure上の環境変数設定_5

6) 以下の確認画面が表示されるので、「続行」ボタンを押下する。
Azure上の環境変数設定_6

7) 保存が完了すると、以下の画面表示内容となる。
Azure上の環境変数設定_7



サンプルプログラムの実行結果(Azure上)

サンプルプログラムを変更後、Azure環境上で実行した結果のログは、以下の通り。

1) TimerTriggerによって動作するAzure Functionsの関数の、実行後のログの一覧内容は以下の通りで、1分毎にTimerTriggerイベントが発生していることが確認できる。
サンプルプログラムの実行結果(Azure上)_1

2) 実行後のログ一覧内容のうち、49分に出力されたログ出力内容は以下の通り。
サンプルプログラムの実行結果(Azure上)_2

3) 実行後のログ一覧内容のうち、50分に出力されたログ出力内容は以下の通り。
サンプルプログラムの実行結果(Azure上)_3

なお、Azure環境でのデプロイ・実行方法については、以下の記事の「サンプルプログラムの実行結果(Azure上)」を参照のこと。

Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を作成してみたこれまでは、HTTPリクエストによりAzure Functionsが動作するアプリケーションのみ作成してきたが、Timer Trigge...

要点まとめ

  • TimerTriggerイベントが発生するタイミングは、環境変数で設定することもできる。その際、TimerTriggerアノテーションのschedule属性で「%(環境変数名)%」を指定すればよい。