LoginSignup
1
0

[ODC]Event Driven Architectureのリトライ・タイムアウトを確認する

Last updated at Posted at 2024-03-28

Event Driven Architectureが発表されたので触ってみるで見た、Event Driven Architectureの、エラー処理とタイムアウトの動作を確認する。

環境情報

ODC Studio(Version 1.4.2)

Event Handlerでハンドルされない例外⇒最大10回リトライ

動作確認用の実装

シンプルなEventを作り、そのHandlerを確実に失敗するように作る。
Event Handlerを失敗させ、リトライの動作確認をする。

Event

image.png

Event Handler

処理が流れると、自動的にRaise Exceptionにたどり着き、例外が発生する。
Exception Handlerを置いていないため、このActionは例外で終了する。

image.png

Ifでは、Boolean型のSettingをチェックし、Trueになったら正常終了させる。これは、万が一に備えての予備的なロジック。無制限かつ短期間にリトライする仕組みであったら、ODC Portalから止めるために入れておいた。先頭のSleepも同じ理由で、共用の環境に過負荷をかけないようにおいてある。

動作確認

↑の実装を行ったEventをTriggerし、ODC PortalのTraceに表示された記録は以下の通り。計11回の実行が記録された。当初の1回の実行+エラー時の最大10回のリトライ。
image.png

リトライの間隔は、
最初の1回:数秒
2回目:2分
3回目:6分
4回目:14分
5回目以降:30分
と徐々に広がり、30分で打ち止めになる。

Event Handlerのタイムアウト⇒2分

動作確認用の実装

Settingで指定した秒数分だけSleepするEvent Handlerを作成する。
Sleepする時間を変更しながらログを確認し、Event Handlerのタイムアウト時間を探る。

Event

image.png

Event Handler

処理としては、Setting SecondsToSleepに設定した秒数分Sleepするだけ。動作していることをODC Portal > Logsから確認できるように、開始時と終了時にLogMessageでその時点の日時を出力している。
image.png

動作確認

110秒Sleep ⇒ 正常に終了する

ODC Portal > Logsで開始ログ・終了ログともに出力されている。つまりEvent Handlerは実行に110秒かかってもタイムアウトしない。
image.png

130秒Sleep ⇒ タイムアウトする

ODC Portal > Logsで開始ログが出力された2分後に再び開始ログが出力される。これはタイムアウトによってリトライされたことを示す。
image.png

以下のイベント実行のログ(「OS-BERT-61600 - Error while handling event.
The event execution exceeded the 120-second timeout.」)からも、2分でタイムアウトになったことが確認できる。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0