メッセージ・フローのトランザクション

メッセージ・フローは 2 つのトランザクション・スタイルをサポートします。
  1. 整合されたメッセージ・フローは、リソースに対するすべての更新が単一トランザクション内で一緒にコミットまたはロールバックされるようにします。
  2. 非整合メッセージ・フローは、リソースに対する更新が別個に行われるようにします。 更新はフローの全体的な成功または失敗の影響を受けません。

整合されたメッセージ・フロー

外部データベースまたはその他のリカバリー可能リソースとの対話を含むメッセージ・フローは、そのすべての処理が 1 つのグローバルなトランザクション内で整合されるように構成することができます。 この整合によって、すべての処理が正常に完了されるか、処理がまったく実行されないかのいずれかになります。 トランザクションは、コミット (すべての処理が成功した場合) またはロールバック (少なくとも処理の一部が成功しない場合) されます。 つまり、影響を受けるすべてのリソース (キュー、データベースなど) は、整合した状態を維持し、データ整合性が保たれることになります。

整合フローによって行われる更新は、フローが入力メッセージの処理を正常に完了したときにコミットされます。 次の場合に更新はバックアウトされます。
  1. フロー内の任意のノードが例外をスローし、それが入力ノード以外のノードにキャッチされない場合。なおかつ
  2. 入力ノードの catch ターミナルが接続されていない場合。

整合済みとしてメッセージ・フローを構成するには、メッセージ・フローで「整合」プロパティーを設定します。

MQInput、または SCADA ノードなど、一部の入力ノードでは、フローのノードの「トランザクション・モード」プロパティーを「自動」に設定できます。これは、メッセージがグローバル・トランザクションの一部となり、入力メッセージが持続する場合にはフローがトランザクションとして、持続しない場合には非整合としてマークされることを意味します。 入力ノードによってフローがトランザクションとマークされた場合、トランザクション・モード・プロパティーを「自動」に設定するフローの後続のノードはグローバル・トランザクションに組み込まれます。

メッセージ・フローのトランザクション調整は、分散プラットフォームでは WebSphere MQ によって、z/OS システムでは RRS によって提供されます。 z/OS の場合、メッセージ・フローは、その「整合」プロパティーが整合として指定されているかどうかに関係なく、常にグローバルに整合されます。

非整合メッセージ・フロー

非整合フローは、「整合」プロパティーが設定されていないフローです。 非整合フローによって使用されるリソースに対する更新は、個々のリソース・マネージャーによって管理されます。 リソース・マネージャーの中には、更新を非トランザクションとして、またはリソース固有のトランザクションの一部として行えるものがあります (例えば WebSphere MQSeries など)。 また、常にリソース固有のトランザクションを使用するリソース・マネージャーもあります (例えばデータベース・マネージャー)。 リソース固有のトランザクションは、単一のリソース・マネージャー (例えばデータベース・マネージャーまたはキュー・マネージャーなど) によって所有されるリソースにその有効範囲が限られています。

リソース固有のトランザクションは通常、フロー内で 1 つのタイプのリカバリー可能リソースしか使用されていないような場合にのみ使用されます。 (MQInput および MQOutput ノードが含まれているものの、どのデータベースにもアクセスしないようなフローはその一例です。) 複数のリソースが存在し、データ保全性を維持しなければならない場合には、リソース固有のトランザクションを使用すべきではありません。

非トランザクションとしてアクセスされるリソースに対する更新は、即時にコミットされます。 非トランザクションとなるように構成されている MQInput ノードは、キューからメッセージを即時に除去し、フローが失敗するとメッセージは失われます。

一部の入力ノード (例えば MQInput、または SCADA ノード) は、トランザクション・モードを「自動」に設定することにより、トランザクションの一部となることができます (入力メッセージの持続性に依存する)。 入力メッセージが持続的なものである場合、メッセージはトランザクションの一部となり、フローはトランザクションとしてマークされます。メッセージが持続的なものでない場合は、非トランザクションとしてマークされます。

Error Handler サンプルは、 グローバルに整合されたトランザクションの使用法を示すとともに、 データベース更新が整合された場合のメッセージ・フロー (メイン・フロー) と、 整合されない場合のメッセージ・フロー (エラー・フロー) の相違を示します。

関連概念
メッセージ・フローの概要
関連タスク
メッセージ・フローの作成
メッセージ・フローの内容の定義
整合されたメッセージ・フローの構成
メッセージ・フローのエラー処理
関連資料
組み込みノード
整合されたメッセージ・フローのデータベース接続
整合されたメッセージ・フローのデータベース・サポート
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac00645_