整合されたメッセージ・フローのためのノードの構成

メッセージ・フローの処理を他のリソースと整合したい場合には、メッセージ・フロー内のノード、およびメッセージ・フロー自体の両方のプロパティーを構成する必要があります。

整合されるメッセージ・フローは、単一トランザクション内で実行します。 トランザクションは、入力ノードがメッセージを受信した時点で開始し、すべての処理が完了した時点で、コミットまたはロールバックすることができます。 また、データベースと対話するノードによってデータベース・エラーを処理する方法も制御できます。

次のようにして、メッセージ・フローおよびノードを構成します。

  1. 「ブローカー・アプリケーション開発」パースペクティブに切り替えます。
  2. 作業したいメッセージ・フローを開くか、または新規メッセージ・フローを作成します。
  3. 次のノードがこのメッセージ・フローにある場合は、「トランザクション」プロパティーを設定します。
    • Compute
    • Database
    • DataDelete
    • DataInsert
    • DataUpdate
    • Filter
    • Mapping
    • Warehouse

    トランザクション」プロパティーには、次の値を設定できます。

    自動
    メッセージ・フローの処理が完了したら、ノードが実行した更新、削除、または追加がすべてコミットあるいはロールバックされます。 メッセージ・フローが正常に完了した場合は、すべての変更をコミットします。 メッセージ・フローが正常に完了しなかった場合は、すべての変更をロールバックします。

    メッセージ・フローによるすべての処理を整合したい場合には、この値を選択する必要があります。

    コミット
    メッセージ・フローのデプロイ先システムに応じて、異なるアクションが取られます。
    • 分散システムの場合、メッセージ・フローがこの先成功するか失敗するかにかかわらず、このメッセージ・フロー内のこのデータ・ソースに対してこれまでに行ったあらゆる作業 (このノードで実行したあらゆるアクションを含む) をコミットします。
      注: z/OS 以外のプラットフォーム上では、それぞれのリレーショナル・データベースがこのモードの操作をサポートする場合もあれば、サポートしない場合もあります。
    • z/OS では、メッセージ・フローのその後の成功または失敗にかかわらず、このノードで実行したアクションのみが コミットされます。このノードより前に実行された、トランザクション特性が自動のアクションは、どれもコミットされずに作業単位の中に残ります。そして、メッセージ・フローが成功するかどうかに応じて、コミットまたはロールバックできます。
    同じメッセージ・フローの中に、「自動」のトランザクション特性のノードと、「コミット」のトランザクション特性のノードを混在させる場合、両方のノードが同じ外部データベースに対して操作を行うのであれば、別個の ODBC 接続を使用する必要があります。 一方の接続はメッセージ・フローが完了するまでコミットしないノード用、もう一方の接続は即座にコミットするノード用です。さもないと、即座にコミットするノードは、それより前の「自動」ノードが実行した操作まで、すべてコミットしてしまいます。
    注: z/OS 以外のプラットフォーム上では、それぞれのリレーショナル・データベースがこのモードの操作をサポートする場合もあれば、サポートしない場合もあります。

    複数の ODBC 接続を定義すると、データベース・ロックの問題が起こることがあります。 特に、「自動」のトランザクション特性のノードが、データベース・オブジェクト (表など) をロックする操作 (INSERT または UPDATE など) を実行した場合、後続のノードが別の ODBC 接続を使ってこのデータベース・オブジェクトへのアクセスを試みると、無限ロック (デッドロック) が生じます。

    2 番目のノードは、最初のノードが獲得したロックが解放されるのを待ちますが、最初のノードは、メッセージ・フローが完了するまで、操作をコミットすることも、ロックを解放することもありません。しかし、この場合にメッセージ・フローが完了することは決してありません。というのは、2 番目のノードが、最初のノードのデータベース・ロックが解放されるのを待っているからです。

    このような状況を DBMS のデッドロック自動回避ルーチンで検出することはできません。 というのは、2 つの操作はブローカーを使って間接的に干渉し合っているからです。

    この種のロックの問題を回避する方法が 2 つあります。

    • コミットされていない (「自動の」) 操作が、別の ODBC 接続を使う後続の操作がアクセスしなければならないデータベース・オブジェクトをロックしないように、メッセージ・フローを設計する。
    • 一定時間が経過したらロックを獲得しようとしても失敗するように、データベースのロック・タイムアウト・パラメーターを構成する。 ロック・タイムアウトが原因でデータベースの操作が失敗したら、例外がスローされ、ブローカーはこれを通常の方法で処理します。

    特定の操作によってロックされるデータベース・オブジェクトについて、およびデータベースのロック・タイムアウト・パラメーターを構成する方法については、ご使用のデータベース製品の資料をご覧ください。

  4. 次のノードがこのメッセージ・フローにある場合は、「トランザクション・モード」プロパティーを設定します。
    • MQInput
    • MQOutput
    • MQReply
    • SCADAInput
    • JMSInput ノード
    • JMSOutput ノード

    次の表は、入出力ノードの特定のプロパティー設定に対応して行われるアクションの要約を示しています。

    メッセージ持続性 a Input ノード・トランザクション・モード MQOutput または MQReply ノード・トランザクション・モード メッセージ・フローがグローバルに整合されるかどうか
    はい はい 自動 はい
    いいえ はい 自動 はい
    はい いいえ 自動 いいえ
    いいえ いいえ 自動 いいえ
    はい 自動 自動 はい
    いいえ 自動 自動 いいえ
    任意 b 任意 b はい はい
    任意 b 任意 b いいえ いいえ
    注:
    1. 持続性は、WebSphere MQ Enterprise TransportWebSphere MQ Mobile Transport、および WebSphere MQ Telemetry Transport プロトコルを介して受信されるメッセージについてのみ関係があります。
    2. MQOutput または MQReply ノード・プロパティー設定は、ここで設定されている値を指定変更します。
    3. JMSInput および JMSOutput ノードのトランザクション・モード設定は、上記の表とは異なる設定になります。 詳細については、JMSInput ノードおよびJMSOutput ノードを参照してください。

    それぞれの入力ノードのデフォルトは はい です。 これはつまり、着信メッセージは同期点下で処理されるということです。 さらに、出力ノードに送信されたメッセージは、同期点下で配送されます。 出力ノードが MQOutput または MQReply ノードの場合は、どちらにも「トランザクション・モード」プロパティーがあるので、この動作は変更することができます。

    入力ノード上の「トランザクション・モード」を「自動」に設定した場合には、着信メッセージが永続と定義されている場合にのみ、同期点下で処理されます。 MQOutput ノードに送信されたメッセージは、MQOutput ノードで「トランザクション・モード」を明示的に変更しない限り、同期点下で配信されます。

  5. データベースにアクセスするそれぞれのノードごとに、「警告をエラーとして扱う」および「データベース・エラーで例外をスローする」を設定し、それぞれのノードでデータベースの警告とエラーを処理する方法を指定します。 これらのプロパティーの選択や、ノードの failure ターミナルに接続する方法も、データベースの更新がコミットされるか、ロールバックされるかに影響します。
  6. 「ブローカー管理」パースペクティブに切り替えます。
  7. ブローカー・アーカイブにメッセージ・フローを追加します。
  8. ブローカー・アーカイブ・エディターの下の「構成」タブを選択して、メッセージ・フローを選択します。 これは、ブローカー・アーカイブ内のメッセージ・フローの構成可能プロパティーを表示します。 チェック・ボックス coordinatedTransaction を選択して、メッセージ・フローをグローバルに整合するよう構成します。

    z/OS では、トランザクションが常にグローバルに整合されます。 メッセージ・フローの coordinatedTransaction プロパティーの設定は、無視されます。 整合は常に RRS によって提供されます。

関連概念
メッセージ・フローの概要
メッセージ・フローのトランザクション
関連タスク
メッセージ・フローからデータベースへのアクセス
整合されたメッセージ・フローの構成
メッセージ・フローのエラー処理
構成可能プロパティーの編集
関連資料
サポートされるデータベース
組み込みノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac00393_