Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.4.6 DBキュー機能のトランザクションの流れ(ユーザキューアクセス)

DBキュー機能を使用したユーザキューアクセスでのメッセージ送受信トランザクションの流れについて説明します。

〈この項の構成〉

(1) メッセージ書き込みの処理の流れ(同一システム内でのユーザキューアクセス)

DBキューを使用したユーザキューアクセスでは,連鎖モードのコミット要求およびサービス関数(UAP)のリターン時に,DBキューへの書き込み処理をします。

DBキューを使用した同一システム内でのユーザキューアクセスについて,メッセージ書き込みの処理の流れを次に示します。

図3‒32 メッセージ書き込みの処理の流れ(同一システム内でのユーザキューアクセス)

[図データ]

  1. サービストランザクション(メッセージ書き込み要求を行うトランザクション)で起動されたUAPで,ee_dbq_msgput関数を呼び出してメッセージの書き込み処理を要求します。

  2. UAPがリターンします。

  3. サービストランザクションのコミットを契機に,DBキューにメッセージを書き込みます。

(2) メッセージ書き込みの処理の流れ(他システムとのユーザキューアクセス)

DBキューを使用したユーザキューアクセスでは,連鎖モードのコミット要求およびサービス関数(UAP)のリターン時に,DBキューへの書き込み処理をします。

DBキューを使用した他システムとのユーザキューアクセスについて,他システムが読み出すDBキューにメッセージを書き込む場合の処理の流れを次に示します。

図3‒33 他システムが読み出すDBキューにメッセージを書き込む場合の処理の流れ(他システムとのユーザキューアクセス)

[図データ]

  1. サービストランザクション(メッセージ書き込み要求を行うトランザクション)で起動されたUAPで,ee_dbq_msgput関数を呼び出してメッセージの書き込み処理を要求します。

  2. UAPがリターンします。

  3. サービストランザクションのコミットを契機に,DBキューにメッセージを書き込みます。

  4. DBキューを読み出す側の他システムに対して,DBキューにメッセージを書き込んだことを通知するためのイベントを送信するトランザクションを開始します。

  5. イベントを送信します。イベントを受信した他システムでは,DBキューの書き込み通番を更新するためのトランザクションを開始し,未読み出しメッセージ数を管理します。

(3) メッセージ読み出しの処理の流れ

DBキューを使用したユーザキューアクセスでは,連鎖モードのコミット要求およびサービス関数(UAP)のリターン時に,DBキュー内のメッセージを読み出し済みにします。

DBキューを使用したユーザキューアクセスについて,メッセージ読み出しの処理の流れを次に示します。

図3‒34 メッセージ読み出しの処理の流れ(ユーザキューアクセス)

[図データ]

  1. メッセージ読み出しトランザクションで,メッセージの読み出し処理をするUAPを起動します。

  2. UAP内でee_dbq_msgget関数を呼び出して,DBキューに書き込まれたメッセージの読み出し処理を要求します。

  3. DBキューに書き込まれたメッセージを読み出します。

  4. 読み出したメッセージをUAPに渡します。

  5. UAPがリターンします。

  6. メッセージ読み出しトランザクションのコミットのあと,3.でDBキューから読み出したメッセージを読み出し済みにします。

(4) 読み出したメッセージのロールバックを要求された場合の処理の流れ

DBキューを使用したユーザキューアクセスでは,連鎖モードのロールバック要求でDBキューのee_dbq_msgget関数による処理がロールバックされます。そのため,再度ee_dbq_msgget関数を実行すると,同じメッセージが読み出されます。サービス関数(UAP)のリターン時には,DBキュー内のメッセージは読み出し済みになります。

DBキューを使用したユーザキューアクセスについて,読み出したメッセージのロールバックを要求された場合の処理の流れを次に示します。

図3‒35 読み出したメッセージのロールバックを要求された場合の処理の流れ(ユーザキューアクセス)

[図データ]

  1. メッセージ読み出しトランザクションで,メッセージの読み出し処理をするUAPを起動します。

  2. UAP内でee_dbq_msgget関数を呼び出して,DBキューに書き込まれたメッセージの読み出し処理を要求します。

  3. DBキューに書き込まれたメッセージを読み出します。

  4. 読み出したメッセージをUAPに渡します。

  5. UAPがロールバックを要求します。ロールバック処理では,DBキューに対しての操作はありません。

  6. UAP内でee_dbq_msgget関数を呼び出して,DBキューに書き込まれたメッセージの読み出し処理を要求します。

  7. DBキューに書き込まれたメッセージを読み出します。このとき読み出されるメッセージは,3.でDBキューから読み出したメッセージと同じメッセージです。

  8. 読み出したメッセージをUAPに渡します。

  9. UAPがリターンします。

  10. メッセージ読み出しトランザクションのコミットのあと,7.でDBキューから読み出したメッセージを読み出し済みにします。