Timer Triggerによって、一定時間が来たタイミングでAzure Functionsが動作するアプリケーションを作成できるが、このアプリケーションは、Azure Portal上で手動で実行することもできる。
今回は、Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を手動で実行してみたので、共有する。
前提条件
下記記事のサンプルプログラムを作成済であること。
作成したサンプルプログラムの修正
前提条件の記事のサンプルプログラムを、10分毎にTimerTriggerイベントが発生するように修正する。なお、下記の赤枠は、前提条件のプログラムから変更したプログラムである。
修正したTimerTriggerイベントが発生したタイミングで呼ばれるハンドラークラスの内容は以下の通りで、10分毎にTimerTriggerイベントが発生するように修正している。
package com.example; import org.springframework.cloud.function.adapter.azure.FunctionInvoker; import com.example.model.TimerTriggerParam; import com.example.model.TimerTriggerResult; import com.microsoft.azure.functions.ExecutionContext; import com.microsoft.azure.functions.annotation.FunctionName; import com.microsoft.azure.functions.annotation.TimerTrigger; public class TimerTriggerTestHandler extends FunctionInvoker<TimerTriggerParam, TimerTriggerResult>{ /** * TimerTriggerによって、DemoAzureFunctionクラスのtimerTriggerTestメソッドを呼び出す. * @param timerInfo TimerTriggerイベント情報 * @param context コンテキストオブジェクト */ // 「schedule = "0 */10 * * * *"」で、10分毎にTimerTriggerイベントが発生するようになっている @FunctionName("timerTriggerTest") public void timerTriggerTest(@TimerTrigger(name = "timerTriggerTest" , schedule = "0 */10 * * * *") String timerInfo, ExecutionContext context) { context.getLogger().info("TimerTriggerTestHandler timerTriggerTest triggered: " + timerInfo); TimerTriggerParam param = new TimerTriggerParam(); param.setTimerInfo(timerInfo); param.setLogger(context.getLogger()); handleRequest(param, context); } }
その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-functions-timer-trigger-manual/demoAzureFunc
また、その後のビルドとデプロイ手順については、前提条件の記事を参照のこと。
関数の手動実行
Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を手動で実行するのは、Azure Portal上で実行できる。その手順は、以下の通り。
1) Azure Functionsの概要を表示した状態で「関数」メニューを押下する。
6) Azure Functionsの関数「timerTriggerTest」が実行され、HTTP応答コードが202(リクエストが受理された)が返されることが確認できる。また、ログの先頭を見ると、リクエストが送信された時間が確認できる。
7) ログを確認するため、「モニター」メニューを押下する。ログの一覧が表示されるため、リクエストが送信された時間のログのリンクを押下する。
8) ログに、以下の赤枠の、ハンドラークラスとサービスクラスのログが出力されることが確認できる。ログが実行されたのは12:16であるが、ログを見ると、Timer Triggerが動作するタイミングは「12:10」「12:20」と10分置きであることが確認できる。
要点まとめ
- Azure Functions上でTimerTriggerによって動作するJavaアプリケーションは、自動で実行されるタイミングでなくても、Azure Portal上で手動実行できる。手動実行するには、Azure Portal上で実行したい関数の「コードとテスト」メニューを開いて実行すればよい。