2.6.8 連鎖モード連携機能

トランザクション処理の同期点取得には,一つのトランザクションの終了後,同期点を取得して次のトランザクションを続けて起動する連鎖モードのコミット,ロールバックと,トランザクションの終了で同期点を取得したあと,新たなトランザクションを起動しない非連鎖モードのコミット,ロールバックがあります。

連鎖モード連携機能とは,読み出したメッセージを連鎖モードのコミット,ロールバックと連携して決着するか,または連携しないでUAP終了で決着するかを指定する機能です。サービス属性定義のservice_attrオペランドの-gオプションによって指定できます。

<この項の構成>
(1) 連鎖モード連携する場合
(2) 連鎖モード連携しない場合

(1) 連鎖モード連携する場合

連鎖モード連携機能を使用すると,連鎖モードのコミット,ロールバックと連携して読み出したメッセージを決着させます。

■連鎖モードのコミットで決着した場合
トランザクションが連鎖モードのコミットによって決着すると,読み出したメッセージは読み出し済みになります。
■連鎖モードのロールバックで決着した場合
トランザクションが連鎖モードのロールバックによって決着すると,メッセージはリトライまたは破棄となります。
トランザクションがロールバックしたときの再起動トランザクションは,読み出したメッセージとは関係のないトランザクションとなります。再起動トランザクションでは,メッセージの読み出し,およびメッセージの差し戻しはできません。また,再起動トランザクションで連鎖モードのコミットまたはロールバックによってトランザクションが決着しても,メッセージには影響しません。
■連鎖モードのコミット,ロールバックを要求しなかった場合
連鎖モードのコミット,ロールバックを要求しなかった場合は,UAPがリターンした時点のトランザクションの決着によって,メッセージは読み出し済み,リトライ,または破棄となります。

連鎖モード連携する場合の処理の流れを次の図に示します。

図2-44 連鎖モード連携する場合の処理の流れ

[図データ]

説明
  1. メッセージ1のトランザクションが開始されたあとも,トランザクションが決着するまでの間,メッセージの読み出しおよび差し戻しができます。
  2. メッセージ1のトランザクションが,連鎖モードのロールバックによって決着し,リトライが決定したため,残りの処理をメッセージ1とは関係のない再起動トランザクションとします。
  3. 連鎖モードのロールバックによる再起動トランザクションでは,メッセージの読み出しおよび差し戻しはできません。また,再起動トランザクションが決着した時点では,メッセージ1は読み出し済みになりません。
  4. 2.でリトライが決定したため,メッセージ1が再度読み出されます。トランザクションがコミットで決着すると,メッセージ1は読み出し済みになります。

(2) 連鎖モード連携しない場合

連鎖モード連携しない場合,つまり,連鎖モードのコミットまたはロールバックによるトランザクションの決着でメッセージを決着しない場合は,UAPがリターンした時点のトランザクションの決着で,メッセージを決着します(読み出し済み,リトライ,または破棄とします)。

連鎖モード連携しない場合は,再起動トランザクションでメッセージの読み出し,およびメッセージの差し戻しができます。連鎖モード連携しない場合の処理の流れを次の図に示します。

図2-45 連鎖モード連携をしない場合の処理の流れ

[図データ]

説明
  1. 連鎖モード連携しないため,トランザクションがロールバックで決着したあとの再起動トランザクションでもメッセージの読み出し要求,および差し戻し要求ができます。
  2. メッセージ1は,再起動トランザクションの決着によって読み出し済みになります。
  3. メッセージ1が読み出し済みになったため,メッセージ2が読み出され,トランザクションが開始されます。