Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引


7.5.5 反映処理方法および反映処理方法の指定

〈この項の構成〉

(1) 反映処理方法の指定

反映サービスの反映処理方法を指定するには,データ連携支援関連定義のtrnrks_service定義コマンドに反映サービス名,および反映処理方法(DBキュー書き込みならdbq,RPC送信ならrpc,ユーザ任意処理ならusr)を指定してください。反映先指定UOCで対象サービス名を指定した場合,反映処理スレッド上でtrnrks_service定義コマンドで指定した反映処理を実行します。

反映処理方法と反映先の指定方法
trnrks_service  -s 反映サービス1  -t dbq  -d DBキューグループ名 …
trnrks_service  -s 反映サービス2  -t rpc  -v サービスグループ名 …
trnrks_service  -s 反映サービス3  -t usr  -r 反映UOC名

(2) DBキュー書き込み

(a) 概要

反映先指定UOCで指定した反映サービスがDBキューの場合(-tオプションにdbqを指定),反映処理としてデータ連携支援がDBキュー書き込み処理を行います。書き込み先は,trnrks_service定義コマンドで指定したDBキューグループに属するDBキューです。

書き込むデータを編集したい場合は,編集UOCで編集データ指定エリアを編集してください。

データ連携支援で使用できるTP1/EEのDBキュー機能

TP1/EEのDBキュー機能のデータ連携支援での使用有無を次の表に示します。

表7‒16 データ連携で使用できるTP1/EEのDBキュー機能

項番

機能名

サポート状況

AP間通信

ユーザキュー

HiRDB

Oracle

HiRDB

Oracle

1

他システム間連携(J2EE限定)

×

×

×

×

2

他システム間連携(TP1/EE限定)

×

×

3

開始時の構成チェック

×

×

4

終了時の未読み出しチェック

×

×

×

×

5

API

×

×

×

×

6

コマンド(詳細は「30. 運用コマンド」を参照)

×

×

7

DBキュー読み出し先サーバ変更

×

×

×

×

8

DBキュー書き込み抑止

×

×

9

イベント送信先自動取得

×

×

10

通番初期化

×

×

11

DBキュー書き込み禁止機能

×

×

×

×

12

交替用メッセージ表書き込み機能

×

×

(凡例)

○:使用できます

△:一部使用できます

×:使用できません

データ連携支援独自のDBキュー機能

データ連携支援での独自のDBキュー機能の一覧を次の表に示します。

表7‒17 データ連携独自のDBキュー機能

項番

機能名

サポート状況

AP間通信

ユーザキュー

HiRDB

Oracle

HiRDB

Oracle

1

編集UOC

×

×

2

同期点取得

×

×

3

2重書き込みの防止

×

×

4

書き込み障害時のリトライ

×

×

(凡例)

○:使用できます

×:使用できません

(b) 編集UOC

編集UOCでは反映処理関数において,編集データ指定エリアにDBキュー書き込みをするデータを編集します。編集データ指定エリアには任意の情報,またはUOCに引き渡したUJを指定可能です。

DBキュー書き込みを行わないで,該当UJの処理を終了することも可能です。

編集UOCは省略可能であり,省略した場合UOCに引き渡したUJをDBキューに書き込みます。

(c) 他システム間連携

データ連携支援は,DBキューを介してTP1/EEとシステム間でデータを連携できます。

他システムとDBキューの接続形態について

DBキューとの接続形態は,read側DBキューとwrite側DBキューの2種類があります。データ連携支援は,write側DBキューとしてDBキューと接続しDBキューにメッセージを書き込むことができます。AP間通信,ユーザキューアクセスのどちらのDBキューにも書き込むことができます。

データ連携支援は,read側DBキューとしてDBキューと接続することはできません。

データ連携支援が書き込むDBキューにread側として接続するシステムは,TP1/EEが使用できます。

図7‒35 他システム間連携

[図データ]

他システムとの通信形態

DBキューを介した他システムとの通信は,RPC通信とTCP/IP通信があります。データ連携支援では,TCP/IP通信を使用します。

(d) 開始時の構成チェック

データ連携支援開始時に,定義されたすべてのDBキューの構成をチェックします。データ連携書き込み属性がないなど構成に誤りがある場合,データ連携支援は強制停止します。

(e) DBキュー書き込み抑止

データ連携支援がDBキューにメッセージを書き込むときに,DBキューが書き込み抑止状態になっていると,データ連携支援は,抽出処理を中断して,実行中のほかの反映サービス終了後に終了します。

書き込み抑止状態は,TP1/EEからコマンドを実行することで変更できます。データ連携支援からは変更できません。

(f) イベント送信自動取得

データ連携支援は,メッセージを書き込むときに,TP1/EEがDBキューに書き込んだイベント送信先情報を基に,TP1/EEにメッセージを書き込んだことを通知します。そのため,DBキューからメッセージを読み出すサーバの変更は,データ連携支援の実行中に,データ連携支援定義の変更をすることなく行うことができます。

(g) 通番初期化

データ連携支援実行中に,TP1/EEでDBキューの通番初期化を行うことができます。データ連携支援実行中に,TP1/EEでDBキューの通番初期化を行った場合,データ連携支援が書き込んでいたメッセージの扱いは,マニュアル「分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引」の「ee_dbq_msgput」の説明を参照してください。

データ連携支援からは,DBキューの通番初期化を行うことはできません。

(h) 同期点取得

DBキューに書きこんだメッセージの同期点は,PJ管理表の更新契機と同期を取ります。PJ管理表の更新タイミング変更機能を使用しない場合は,1つのトランザクションが出力したデータをDBキューに書き込んでコミットします。PJ管理表の更新タイミング変更機能を使用している場合は,PJUPITVLオペランドに指定した数のトランザクションが出力したデータをDBキューに書き込んでコミットします。

DBキューへのメッセージの書き込みは,DBキューの表の排他期間を短くするために,編集UOCリターンごとに行うのではなく,コミットする直前に行います。

再開始時にデータの抜けが発生しないようにするために,すべてのDBキュー書き込みへのコミットが完了してからPJ管理表をコミットします。障害でコミットできなかったDBキューへの書き込みが1つでもある場合,PJ管理表をコミットしません。

PJUPITVL=2を指定した場合の同期点取得の例を次の図に示します。

図7‒36 同期点取得

[図データ]

(i) 2重書き込みの防止

データ連携支援が中断し再開始したときに,データ連携支援が2重入力を行ってもDBキューへの2重書き込みはしません。データ連携支援は,DBキューのメッセージ表にデータを書き込む時に,DBキューのデータ連携引き継ぎ情報表にPJの累積データ通番も書き込みます。

データ連携支援再開始時は,データ連携引き継ぎ情報表からPJの累積データ通番を入力します。入力したPJの累積データ通番と,抽出したPJの累積データ通番を比較してDBキューに書き込み済みのPJのトランザクションのUJは,DBキューサービスの編集UOCに渡さないですべて破棄します。

なお,2重書き込みの防止は,次のどちらかの場合に行います。

  • データ連携支援の開始モードが再開始の場合

  • データ連携支援の開始モードが強制開始で,SHMIDオペランドに指定した共有メモリが参照できた(マシンダウンしていない)場合

データ連携支援中断時の抽出位置とDBキューへの書き込み位置の関係を次の図に示します。

図7‒37 抽出位置と書き込み位置の関係

[図データ]

中断位置

再開始時の抽出位置

(反映先指定UOCに渡すデータ)

再開始時のDBキュー書き込み位置

(編集UOCに渡すデータ)

1.〜4.

1-1から

1-1から

5.

1-1から

3-1から

6.

3-1から

3-1から

(j) 書き込み障害時のリトライ

DBキューへの書き込みが失敗した際に,失敗要因によってDBキューへの書き込みをリトライします。失敗要因ごとのリトライ動作を次の表に示します。

表7‒18 書き込み失敗要因別リトライ動作一覧

項番

書き込み失敗要因

リトライ動作

備考

1

キュー満杯

書き込みリトライ

DBキュー上書き抑止属性が付与されている場合はリトライしません。

2

書き込み可能最大数超過

3

書き込み抑止中

4

SQLエラー

自動再実行

5

イベント送信失敗

(凡例)

−:リトライしないでデータ連携支援を強制停止します

書き込みリトライは,定義(dbq_rks_retry_count)に従って書き込み処理をリトライします。また,リトライ時の処理は定義(dbq_rks_retry_interval)で指定された時間だけ待ち合わせたあとに実行されます。これは,処理待ち合わせ中にメッセージが読み出されてDBキューの空き数が増加して書き込み可能になることを期待しています。

リトライ回数が上限値(dbq_rks_retry_count)に達した場合は,データ連携支援は強制停止します。

(k) 交替用メッセージ表書き込み

eedbqtblhコマンド実行時に-aオプションに8を論理和で指定してDBキューを作成することで,交替用のメッセージ表に書き込みます。

この機能を使用すると,データ連携支援の自動再実行をする前に,交替用のメッセージ表に書き込みデータ連携支援を続行します。これによってデータ連携支援を使用した業務を継続できます。メッセージ表以外のDBキューの表で障害が発生した場合,この機能は動作しません。

一度交替用のメッセージ表に書き込みを行うと,後続のトランザクションでは交替用の表にメッセージを書き込みます。通常のメッセージ表の障害を取り除いたあとに,eerksdbqaltputコマンド,またはeedbqaltputコマンドを実行すると,通常のメッセージ表に書き込むように戻ります。現在どちらの表に書き込む状態かは,eerksdbqlsコマンド,またはeedbqlsコマンドで確認できます。

この機能を使用しない場合は,メッセージ表の書き込み時にSQLエラーが発生すると,データ連携支援を自動再実行します。自動再実行後もSQLエラーが発生した場合は,データ連携が停止します。

(3) RPC送信

(a) 概要

反映先指定UOCで指定した反映サービスがRPC送信の場合(-tオプションにrpcを指定),反映処理としてデータ連携支援がRPC送信処理を行います。通信形態は同期応答型であり,トランザクション連携できません。送信先は,trnrks_service定義コマンドで指定した送信先に送信します。RPC送信の詳細については,マニュアル「分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引」を参照してください。

データ連携支援が中断し再開始した場合,データ連携支援が2重入力を行うことがあるため,RPC送信先で2重入力を考慮した制御をする必要があります。

送信データを編集したい場合は,編集UOCで編集データ指定エリアを編集してください。

(b) 編集UOC

編集UOCでは反映処理関数において,編集データ指定エリアにRPC送信するデータを編集します。編集データ指定エリアには任意の情報,またはUOCに引き渡したUJを指定可能です。

RPC送信を行わないで,該当UJの処理を終了することも可能です。

編集UOCは省略可能であり,省略した場合UOCに引き渡したUJをRPC送信します。履歴情報ヘッダはホストバイトオーダー形式のままRPC送信します。

(c) 送信先での処理

RPC送信先では任意の処理が実行可能です。

また,RPC送信先では送信元であるデータ連携支援に対し,応答情報を設定します。送信先で応答格納領域(out)に応答情報を設定し,応答を返します。

設定可能な応答値を次の表に示します。

表7‒19 送信先で設定可能な応答値

項番

応答値

挙動

1

0

データ連携支援を続行します。

2

20

データ連携支援を自動再実行要で中断します。

3

上記以外

データ連携支援を中断します。

応答値はサイズ4バイトの数値で指定し,かつ応答の長さに4を指定してください。ただし,数値はネットワークバイトオーダー形式で指定してください。

相手プロセス未起動などでRPCに失敗した場合も,データ連携支援を中断します。再開始時は該当UJから処理を開始します。

図7‒38 送信先での応答情報の設定

[図データ]

(4) ユーザ任意処理

反映先指定UOCで指定した反映サービスがユーザ任意処理の場合(-tオプションにusrを指定),反映処理としてデータ連携支援がユーザ任意処理を呼び出します。実行する処理は,trnrks_service定義コマンドで指定した反映UOCをデータ連携支援が実行します。反映UOC内ではSQL処理,RPC送信が可能です。

データ連携支援が中断し再開始した場合,データ連携支援が2重入力を行うことがあるため,UOC内で2重入力を考慮した制御をする必要があります。

図7‒39 ユーザ任意処理の流れ

[図データ]