7.8.4 管理情報およびメッセージの永続化サービス
CJMSPブローカーに障害が発生した場合,回復には,障害発生前のメッセージ送受信操作の状態を示す情報が必要です。CJMSPブローカーでは,回復に必要な状態についての情報をファイルに保存して管理します。障害が発生した場合,保存された情報を基にCJMSPブローカーの状態を回復して,操作を再開できるため,メッセージ配信の信頼性を確保できます。
CJMSPブローカーは,次のような情報をファイルに保存して管理します。
-
送信先の情報
-
永続化サブスクライバーの情報
-
メッセージの情報
-
トランザクションの情報
-
メッセージ配信の確認応答についての情報
障害発生後にCJMSPブローカーを再起動すると,保存していた各情報を基に,送信先と永続化サブスクライバーの再作成,永続化メッセージの回復,トランザクションのロールバックが実施され,未配信のメッセージのためのルートが再作成されます。その後,メッセージ配信が再開されます。
(1) 管理情報およびメッセージの永続化の仕組み
CJMSPブローカーでは,永続化する情報の種類ごとにファイルを作成して管理します。保存用のファイルは,CJMSPブローカーが作成されたときに自動的に作成されます。情報の種類ごとに保存先のファイルは異なります。
しきい値(1メガバイト)以下のサイズのメッセージは,メッセージごとに一つの可変長のファイルに保存されます。また,しきい値を超えるサイズのメッセージは,ファイルプールの複数のファイルで管理されます。ファイルプールの各ファイルのサイズは1メガバイトです。
(2) ファイルプールの利用
CJMSPブローカーが管理するファイルプールの概要を次の図に示します。
ファイルプールの特徴を次に示します。
(3) ファイルへの書き込みのタイミング
ファイルへのデータの書き込みは,OSの機能で実行します。このとき,書き込みを同期・非同期のどちらで実行するかをimq.persist.file.sync.enabledプロパティで選択できます。なお,デフォルトでは書き込みは非同期で実施されます。
同期書き込み・非同期書き込みの利点と欠点を次の表に示します。
書き込みのタイミング |
利点 |
欠点 |
---|---|---|
非同期 |
書き込み処理による処理性能への影響がありません。 |
障害が発生したときに,一部のデータが失われることがあります。 |
同期 |
障害発生時点までのデータが保存されているため,障害発生直前の状態からCJMSPブローカーの処理を再開できます。 |
書き込み処理による処理性能への影響があります。 |
(4) ファイルの格納先
CJMSPブローカーが管理する永続化データを保存したファイルは,デフォルトでは次のディレクトリに保存されています。なお,varディレクトリの格納先は,cjmsbrokerコマンドの-varhomeオプションで変更できます。
- Windowsの場合
<Application Serverのインストールディレクトリ>\CC\cjmsp\var\instances\<CJMSPブローカーの名称>\fs370
- UNIXの場合
/opt/Cosminexus/CC/cjmsp/var/instances/<CJMSPブローカーの名称>/fs370
fs370ディレクトリ下の構成を次に示します。
ディレクトリ・ファイル名 |
説明 |
---|---|
messageディレクトリ |
このディレクトリ下に,送信先名ごとのサブディレクトリが作成されます。それぞれのサブディレクトリ内に,メッセージごとの個別のファイルが格納されています。 |
interestファイル |
コンシューマーの情報が格納されています。 |
destinationファイル |
送信先の情報が格納されています。 |
propertyファイル |
内部情報が格納されています。 |
txnファイル |
トランザクションIDが格納されています。 |
txnackファイル |
すべてのトランザクションIDに対する配信確認が格納されています。 |
configrecordファイル |
内部情報が格納されています。 |
このディレクトリの内容は,不正にアクセスされないよう,OSのアクセス権などを設定して適切に管理してください。
- 注意事項
-
-
fs370ディレクトリ下のファイルを移動したり,ファイルの属性を読み取り専用に変更したりしないでください。CJMSPブローカーが正しく動作しなくなるおそれがあります。
-
ネットワークドライブや,ネットワーク上のファイルを使用することはできません。cjmsbrokerコマンドの-varhomeオプションでvarディレクトリの格納先を変更する場合は,CJMSPブローカーと同じマシン上のディレクトリを選択するようにしてください。
-
一つのトランザクションの中で大量のメッセージを処理すると,txnackファイルのファイルサイズが大幅に増加することがあります。大量のメッセージを送信する場合,性能テストを実施して,必要なファイルサイズを見積もってください。
-
(5) ファイルのバックアップ
永続化データのバックアップを取得する場合は,CJMSPブローカー単位で取得します。varディレクトリ下のinstancesディレクトリをほかの場所にコピーして保存してください。
回復する場合は,まず,CJMSPブローカーを停止します。バックアップしておいたinstancesディレクトリ以下のファイルをvarディレクトリ下に上書きしてから,CJMSPブローカーを再起動してください。