オーケストレーターのキューアイテムのステータスって分かりにくくないですか?
キューはREFrameworkで使うことが多いと思うのですが、その場合、REFrameworkが勝手にステータスを変更してくれてます。
そこで、
今回はあえてREFrameworkを使わず、自分でキューアイテムを操作して、ステータスの流れを確認してみようと思います。
認定試験でもステータスの流れは出てくるので、すごく良い勉強になるはずです。
まずはステータスの主な流れを理解しよう
まず最初にステータスの主な流れを簡単に書いておきます。
※失敗してもリトライするという設定がありますのでONにしておきます。
①新規→②処理中→③成功
①新規→②処理中→③失敗(ビジネス例外)
①新規→②処理中→③失敗(アプリケーション例外)→④リトライ済み→ ⑤新規(新しいアイテムが作成される)
①新規→②処理中→③破棄済み
では今から実際に1つずつ確認してみましょう。
事前準備
オーケストレーターに「キュー」がない人は、まずは「キュー」を作りましょう。
今回は「test」という名前のキューを使って説明します。
キューを使うには、キューに「アイテム」を追加する必要があります。「キュー」が箱で「アイテム」が箱の中の物、というイメージです。
今このキューの中身は空っぽ、つまり「アイテム」は0件です。
※ここまで「アイテム」という言葉で表現してきましたが、ここからは「アイテム」ではなく「トランザクション」と呼ぶことがあります。↑の画面でも「トランザクション」と表現されています。「アイテム」=「トランザクション」と考えて大丈夫です。
①新規
では、キューに「アイテム」を追加してみましょう。
studioで「キューアイテムを追加(AddQueueItem)」アクティビティを作り実行します。
※アクティビティの詳細については、また別の記事で・・・
このアクティビティを実行すると、キューにアイテムが追加されます。
では、キューのトランザクションを見てみましょう。確かに1件追加されました。
ステータスは「新規」となっています。
②処理中
では、このトランザクションを取得してみます。
またstudioを使って「トランザクションアイテムを取得」アクティビティを実行します。
すると、ステータスが「処理中」になりました。
※他の似た名前の「キューアイテムを取得」アクティビティでは「処理中」にならないので注意
③成功
では、処理が終わり成功する場合を見てみましょう。
またstudioで、今度は「トランザクションのステータスを設定」アクティビティを使います。ステータスには成功を意味する「Successful」を指定します。
実行すると、ステータスが「成功」になりました。
ここまでで、「①新規→②処理中→③成功」という流れを確認できました。
③失敗(ビジネス例外)
では、つぎは失敗(ビジネス例外)の場合です。
ビジネス例外とは、システムエラーや想定外エラーのことです。予想していなかったエラーなので、キューにリトライの設定がされていてもリトライしてくれません。
今、ステータス「処理中」のトランザクションがあり、想定外エラーが起きたとします。
studioで「トランザクションのステータスを設定」アクティビティを使います。
・ステータス「Failed」
・エラーの種類「Business」
実行すると、ステータスが「失敗」になりました。
ビジネス例外で失敗となったトランザクションは、もう使うことはできません。
これが「①新規→②処理中→③失敗(ビジネス例外)」という流れです。
③失敗(アプリケーション例外)→④リトライ済み→ ⑤新規
では、つぎは失敗(アプリケーション例外)の場合です。
アプリケーション例外とは、想定されるエラーのことです。必要なファイルがなかったり使用中だったり、予想できるエラーのことです。原因を改善すれば次は成功する可能性がありますよね。
キューにリトライの設定をしておけば、アプリケーション例外となったトランザクションは、自動で再実行できるような仕組みになっています。
では今、ステータス「処理中」のトランザクションがあり、アプリケーション例外が起きたとします。
studioで「トランザクションのステータスを設定」アクティビティを使います。
・ステータス「Failed」
・エラーの種類「Application」
実行すると、
・「処理中」から「リトライ済み」になり、
・新たに「新規」のトランザクションが追加(コピーして作成された)、
されました。
今回はキューのリトライ回数を「1」としたので、あと1回だけ「トランザクションを取得」で取得することができます。
これが「①新規→②処理中→③失敗(アプリケーション例外)→④リトライ済み→ ⑤新規(新しいアイテムが作成される)」という流れです。
③破棄済み
ではいよいよこれで最後。「破棄済み 」となる場合です。
「処理中」のトランザクションがあるとします。これを長時間 (約 24 時間) ほったらかしにしておくと、「破棄済み」になります。
約1日たつと、勝手に終わらせてしまう、ということです。
まとめ
お疲れ様でした。今回はすごく長かったので疲れたと思います。
でも、これでステータスの流れが少しでも理解できたんじゃないかな、と思います。
ステータスの流れは、資格試験にも含まれる内容なので、覚えておいて損はなしです。
お疲れ様でした(^^)/