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