メッセージの信頼性レベル - JMS デリバリー・モードとサービス統合のサービスの品質
メッセージは、メッセージの配信の信頼性レベルを指定できる、 サービスの品質属性を備えています。JMS アプリケーションが、 JMS デリバリー・モード (パーシスタントまたは非パーシスタント) でメッセージを送信すると、 サービス統合が、JMS 接続ファクトリー設定を使用して、JMS デリバリー・モードをサービス統合のメッセージの信頼性設定にマップします。 このメッセージ信頼性は、バス宛先 (外部宛先および別名宛先を含む) の追加設定によってオーバーライドされることがあります。
- サービスの品質 (QoS) (サービス統合メッセージング)
- デリバリー・モード (JMS)
- パーシスタンス (IBM MQ)
- ベスト・エフォート非パーシスタント
- メッセージング・エンジンで処理の停止または障害が起こった場合、メッセージは廃棄されます。メッセージの送信に使用されている接続が使用不可になった場合、 またはシステム・リソースに制約があった場合にも、メッセージは廃棄される可能性があります。
- 高速非パーシスタント
- メッセージング・エンジンで処理の停止または障害が起こった場合、メッセージは廃棄されます。メッセージの送信に使用されている接続が使用不可になった 場合にも、メッセージは廃棄される可能性があります。
- 高信頼性非パーシスタント
- メッセージング・エンジンで処理の停止または障害が起こった場合、メッセージは廃棄されます。
- 高信頼性パーシスタント
- メッセージング・エンジンで障害が起こった場合、メッセージは廃棄される可能性があります。
- 保証パーシスタント
- メッセージは廃棄されません。
JMS アプリケーションは、JMS デリバリー・モード (パーシスタントまたは非パーシスタント) でメッセージを送信します。 アプリケーションは、このデリバリー・モードを JMS send() メソッドのパラメーターとして指定しますが、オプションで、send() メソッドをオーバーライドするデリバリー・モードを JMS 宛先の属性として指定することもできます。
サービス統合は、JMS 接続ファクトリー設定を使用して、JMS デリバリー・モード (パーシスタントおよび非パーシスタント) をメッセージ信頼性レベルにマップします。 このマッピングを使用すると、ハイパフォーマンスまたは高い信頼性、あるいはその中間のいずれでも選択できます。 必要なマッピングは、JMS 接続ファクトリー設定で指定します。 例えば、デフォルトのメッセージング・プロバイダーの統合された接続ファクトリー [設定]を参照します。
サービス統合のデフォルトの信頼性レベルと最大の信頼性レベルを、バス宛先 (外部宛先および別名宛先を含む) の属性として指定します。 また、宛先のデフォルトの信頼性を、プロデューサー指定の信頼性でオーバーライドするかどうかも指定します。 オーバーライドしない場合は、サービス統合は、メッセージの信頼性レベルを宛先のデフォルトの信頼性にリセットします。 別名宛先の場合、信頼性設定をターゲット宛先から継承することを指定できます。
IBM MQ との相互運用では、 サービス統合メッセージの信頼性設定を、IBM MQ メッセージのパーシスタンス設定にマップします。 詳しくは、IBM MQ パーシスタンス値との間での JMS デリバリー・オプションおよびメッセージ信頼性のマッピングを参照してください。
ベスト・エフォート非パーシスタント | 高速非パーシスタント | 高信頼性非パーシスタント | 高信頼性パーシスタント | 保証パーシスタント | |
---|---|---|---|---|---|
JMS デリバリー・モード: | 非パーシスタント | 非パーシスタント | 非パーシスタント | パーシスタント | パーシスタント |
トランザクションのアトミック性: | いいえ; 個々のメッセージは破棄できない | はい: メッセージは破棄されず、サーバーの 再始動後まで保持されない | はい: メッセージは破棄されず、サーバーの 再始動後まで保持されない | はい | はい |
メッセージの強化: | いいえ | 可能性あり: 宛先でメッセージが蓄積された場合 | 可能性あり: 宛先でメッセージが蓄積された場合 | はい: 非同期 | はい: 同期 |
通常操作でのメッセージの廃棄: | はい | いいえ | いいえ | いいえ | いいえ |
メッセージの重複: | いいえ | 可能性あり: サーバーの障害発生時に状態 データが失われ、その結果重複する可能性がある | 可能性あり: サーバーの障害発生時に状態 データが失われ、その結果重複する可能性がある | 可能性あり: データベースからの削除はユーザー要求について非同期であるため | いいえ |
計画シャットダウン後のメッセージ保持: | いいえ | いいえ | いいえ | はい: 強化メッセージはリカバリーされる、計画シャットダウンではキャッシュ・メッセージを強化する | はい |
クライアントの通信障害後のメッセージ保持: | いいえ | いいえ | はい | はい | はい |
エンジン通信障害後のメッセージ保持: | いいえ | はい | はい | はい | はい |
エンジン・クラッシュ後のメッセージ保持: | いいえ | いいえ | いいえ | 可能性あり: 強化メッセージはリカバリーされる | はい |
バックアップおよびリストア後のメッセージ保持: | いいえ | いいえ | いいえ | 可能性あり: 強化メッセージはバックアップおよびリカバリー可能 | はい |
- JMS デリバリー・モード
- 接続ファクトリーや宛先などの JMS オブジェクトについて、JMS デリ バリー・モードと信頼性設定との間のマッピング。JMS 非パーシスタント送達モードのデフォルト・マッピングは、高速非パーシスタントです。 JMS パーシスタント送達モードのデフォルト・マッピングは、高信頼性パーシスタントです。
- トランザクションのアトミック性
- メッセージが、同じトランザクション内で作成または使用される他のメッセージに 関してアトミックであるかどうかを示します。ベスト・エフォート・メッセージは、 作成時はトランザクションにおいて他のメッセージに対してアトミックではないため、このようなメッセージが 1 つ失われた場合 (メッセージが失われる場合の詳細については、このトピックで説明したベスト・エフォート非パーシスタントの説明を参照)、 同じトランザクション内で処理される他のメッセージは、トランザクションのコミット時に正しく配信することができます (トランザクションがロールバックされると、メッセージに対する処理はすべて、 信頼性に関係なくロールバックされます)。より信頼性の高いメッセージについては、 障害が発生してトランザクションのメッセージが 1 つ失われると、 トランザクションおよびそのトランザクションで実行中のすべての作業がロールバックされ、 オペレーションのトランザクションはアトミックとなります。
- メッセージの強化
- メッセージがデータ・ストアまたはファイル・ストア
のどちらのディスクに書き込まれるかを示します。システム・パフォーマンスは、メッセージのディスクへの
書き込み頻度によって影響を受けます。一般に、メッセージング・エンジンのファイル・ストアを使用すると、パフォーマンスが
向上します。ベスト・エフォート非パーシスタント信頼性のメッセージは決してディスクに書き込まれず、
高速非パーシスタントおよび高信頼性非パーシスタントのメッセージは、
メッセージが宛先で蓄積された場合に書き込まれます。これに対して、
高信頼性パーシスタントおよび保証パーシスタントのメッセージは常にディスクに書き込まれます。
高信頼性パーシスタントの信頼性のメッセージはディスクに書き込まれますが、これは作成アプリケーションに対して非同期に行われます。 これによりデータベース更新のスケジューリングとバッ チ処理の柔軟性が向上し、このデータベース更新によりスループットを 高めることができます。通常の動作状態ではメッセージは失われませんが、 この非同期書き込みが完了する前にメッセージング・エンジンで障害が発生した場合は、 メッセージが失われる可能性があります。
保証パーシスタントの信頼性のメッセージは、作成アプリケーションに対して同期的にディスクに書き込まれます。
メッセージが、作成されると同時に消費されないために、宛先で蓄積できる場合、メッセージング・エンジンはメモリー使用量を管理するために、メッセージをディスクに書き込むよう選択することがあります。
サービスの品質属性がベスト・エフォート非パーシスタントよりも高いメッセージがディスクに書き込まれる場合、そのメッセージはメモリー・バッファーのキャッシュにも入れられることがあります。
- 通常操作でのメッセージの廃棄
- 通常の動作でメッセージが破棄されるかどうかを示します。
- 注:非トランザクションのメッセージ駆動型 Bean がある場合、システムは、Bean の開始時または完了時のいずれかの時点で、メッセージを削除します。 Bean が例外を生成し、そのために Bean が完了しない場合、システムは以下のいずれかのアクションを実行します。
- システムが、Bean の完了時にメッセージを削除するように構成されている場合、メッセージは Bean の新規インスタンスにディスパッチされるため、別のタイミングで処理されます。
- システムが、Bean の開始時にメッセージを削除するように構成されている場合、メッセージは失われます。
サービスの品質がベスト・エフォート非パーシスタントに設定されている場合、Bean が開始するときにメッセージは削除されます。他のすべてのサービスの品質の場合、メッセージは Bean が完了するときに削除されます。
- メッセージの重複
- サーバーの障害発生後にメッセージを重複させるかどうかを示します。
- 計画シャットダウン後のメッセージ保持
- メッセージが計画シャットダウン後または始動後も保持されるかどうかを示します。
- クライアントの通信障害後のメッセージ保持
- メッセージがクライアントのメッセージング・エンジン通信で障害が発生した後も保持されるかどうかを示します。
- エンジン通信障害後のメッセージ保持
- メッセージがエンジン間通信で障害が発生した後も保持されるかどうかを示します。
- エンジン・クラッシュ後のメッセージ保持
- メッセージがメッセージング・エンジンまたはサーバーに障害が発生した後も保持されるかどうかを示します。
- バックアップおよびリストア後のメッセージ保持
- メッセージがオンライン・バックアップとリストア処理の後も保持されるかどうかを示します。