メッセージ・フローの処理を他のリソースと整合したい場合には、メッセージ・フロー内のノード、 およびメッセージ・フロー自体の両方のプロパティーを構成する必要があります。
始める前に:
このタスクを実行するには、以下のタスクを完了している必要があります。
整合されるメッセージ・フローは、単一トランザクション内で実行する必要があります。 トランザクションは、入力ノードがメッセージを受信した時点で開始し、 すべての処理が完了した時点で、コミットまたはロールバックすることができます。 また、データベースと対話するノードによってデータベース・エラーを処理する方法も制御できます。
次のようにして、メッセージ・フローおよびノードを構成します。
「トランザクション (Transaction)」プロパティーには、 次の値を設定できます。
メッセージ・フローによるすべての処理を整合したい場合には、 この値を選択する必要があります。
同じメッセージ・フローの中に、「自動 (Automatic)」のトランザクション特性のノードと、「コミット (Commit)」のトランザクション特性のノードを混在させる場合、 両方のノードが同じ外部データベースに対して操作を行うのであれば、 別個の ODBC 接続を使用する必要があります。 一方の接続はメッセージ・フローが完了するまでコミットしないノード用、 もう一方の接続は即座にコミットするノード用です。さもないと、即座にコミットするノードは、 それより前の「自動 (Automatic)」ノードが実行した操作まで、 すべてコミットしてしまいます。
複数の ODBC 接続を定義すると、 データベース・ロックの問題が起こることがあります。 特に、「自動 (Automatic)」のトランザクション特性のノードが、 データベース・オブジェクト (テーブルなど) をロックする操作 (INSERT または UPDATE など) を実行した場合、 後続のノードが別の ODBC 接続を使ってこのデータベース・オブジェクトへのアクセスを試みると、 無限ロック (デッドロック) が生じます。
2 番目のノードは、最初のノードが獲得したロックが解放されるのを待ちますが、 最初のノードは、メッセージ・フローが完了するまで、操作をコミットすることも、 ロックを解放することもありません。しかし、 この場合にメッセージ・フローが完了することは決してありません。というのは、2 番目のノードが、 最初のノードのデータベース・ロックが解放されるのを待っているからです。
このような状況を DBMS のデッドロック自動回避ルーチンで検出することはできません。 というのは、2 つの操作はブローカーを使って間接的に干渉し合っているからです。
この種のロックの問題を回避する方法が 2 つあります。
特定の操作によってロックされるデータベース・オブジェクトについて、 およびデータベースのロック・タイムアウト・パラメーターを構成する方法については、 ご使用のデータベース製品の資料をご覧ください。
次の表は、入出力ノードの特定のプロパティー設定に対応して行われるアクションの要約を示しています。
メッセージの持続性 1 | Input ノード・トランザクション・モード | MQOutput または MQReply ノード・トランザクション・モード | メッセージ・フローはグローバルに整合される |
---|---|---|---|
はい | はい | 自動 (Automatic) | はい |
いいえ | はい | 自動 (Automatic) | はい |
はい | いいえ | 自動 (Automatic) | いいえ |
いいえ | いいえ | 自動 (Automatic) | いいえ |
はい | 自動 (Automatic) | 自動 (Automatic) | はい |
いいえ | 自動 (Automatic) | 自動 (Automatic) | いいえ |
任意 2 | 任意 2 | はい | はい |
任意 2 | 任意 2 | いいえ | いいえ |
Notes:
|
それぞれの入力ノードのデフォルトは はい です。 これはつまり、着信メッセージは同期点下で処理されるということです。 さらに、出力ノードに送信されたメッセージは、同期点下で配送されます。 出力ノードが MQOutput または MQReply ノードである場合には、 どちらも「トランザクション・モード (Transaction Mode)」プロパティーがあるので、 この動作は変更することができます。
入力ノード上の「トランザクション・モード (Transaction Mode)」を「自動」に設定した場合には、 着信メッセージが永続と定義されている場合にのみ、同期点下で処理されます。 MQOutput ノードに送信されたメッセージは、 MQOutput ノードで「トランザクション・モード (Transaction Mode)」を明示的に変更しない限り、 同期点下で配送されます。
z/OS では、トランザクションが常にグローバルに整合されます。 メッセージ・フローの coordinatedTransaction プロパティーの設定は、無視されます。 整合は常に RRS によって提供されます。
関連概念
メッセージ・フロー
関連タスク
メッセージ・フローからデータベースへのアクセス
整合されたメッセージ・フローの構成
メッセージ・フローのエラー処理
構成可能プロパティーの編集
関連資料
サポートされるデータベース
組み込みノード
注意 |
商標 |
ダウンロード |
ライブラリー |
技術サポート |
フィードバック
![]() ![]() |
ac00393_ |