4.1.4 Reliable Messagingの状態遷移(永続版リソースアダプタの場合)
アプリケーションサーバシステムにとって,Reliable Messagingには未デプロイ状態,デプロイ済み状態,およびリソースアダプタ開始状態の三つの状態があります。また,リソースアダプタ開始状態のReliable Messagingの内部状態として,実行状態,管理状態,閉塞状態および開始中状態があります。
Reliable Messagingの状態について次に説明します。
- 実行状態
-
アプリケーションにサービスを提供する状態です。管理状態からhrmstartコマンドの入力によって移行します。
- 管理状態
-
Reliable Messagingが提供するコマンドを入力して,キューを作成したり,メッセージを削除したりするためのシステム管理用の状態です。実行状態からhrmstopコマンドの入力によって移行します。
- 閉塞状態
-
Reliable Messaging内部のメモリ状態不正などによって,処理の続行ができなくなった状態です。実行状態,管理状態,または開始中状態から移行します。この状態では,アプリケーションにサービスは提供されません。
- 開始中状態
-
リソースアダプタを開始して,前回の状態によって管理状態または実行状態に移行するまでの一時的な状態です。この状態では,DB上に格納されているキューやメッセージ情報をメモリ上に復元します。復元に掛かる時間は,DBに格納されているメッセージの数に比例します。
(1) 状態遷移
Reliable Messagingの状態遷移を次の図に示します。
リソースアダプタを開始した直後は,前回のオンラインでReliable Messagingを停止したときの内部状態に移行します。また,コマンドによっては特定の内部状態のときだけに入力できます。詳細については,「8.2 コマンドの一覧」を参照してください。
(2) 管理状態への移行処理
管理状態に移行するときは,あらかじめアプリケーションを停止させてください。
hrmstopコマンドを入力すると,Reliable Messagingは実行状態から管理状態へ移行します。移行時には,仕掛かり中のメッセージ処理に影響を与えないように,次に示す処理が実行されます。
-
新しいメッセージ受信を停止し,仕掛かり中のメッセージ受信処理が完了するまで待ちます。
-
新しいメッセージ送信を停止し,仕掛かり中のメッセージ送信処理が完了するまで待ちます。
-
キュー間転送での新しいSOAPメッセージの受信を停止し,仕掛かり中のSOAPメッセージの受信処理が完了するまで待ちます。
-
キュー間転送での新しいSOAPメッセージの送信を停止し,仕掛かり中のSOAPメッセージの送信処理で応答が返されるのを待ちます。
-
共用キュー連携時は新しいイベントの受信を停止し,仕掛かり中のメッセージ受信処理が完了するまで待ちます。
-
アプリケーションからの新しいAPI呼び出しに対して例外を返し,仕掛かり中のAPI処理が完了するまで待ちます。なお,仕掛かり中のトランザクションがあっても,Reliable Messagingはトランザクションをロールバックしません。
(3) キュー間転送用Webアプリケーションの状態遷移
Reliable Messagingのキュー間転送用WebアプリケーションをJ2EEアプリケーションとしてデプロイします。J2EEコンテナから見たキュー間転送用Webアプリケーションの状態として,未デプロイ状態,デプロイ状態,および開始状態の三つの状態があります。また,開始状態のキュー間転送用Webアプリケーションの内部状態として,実行状態があります。
キュー間転送用Webアプリケーションが開始状態に遷移できるのは,Reliable Messagingがリソースアダプタ開始状態であることが前提となります。
キュー間転送用Webアプリケーションの状態遷移を次の図に示します。