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を指定した場合の同期点取得の例を次の図に示します。
(i) 2重書き込みの防止
データ連携支援が中断し再開始したときに,データ連携支援が2重入力を行ってもDBキューへの2重書き込みはしません。データ連携支援は,DBキューのメッセージ表にデータを書き込む時に,DBキューのデータ連携引き継ぎ情報表にPJの累積データ通番も書き込みます。
データ連携支援再開始時は,データ連携引き継ぎ情報表からPJの累積データ通番を入力します。入力したPJの累積データ通番と,抽出したPJの累積データ通番を比較してDBキューに書き込み済みのPJのトランザクションのUJは,DBキューサービスの編集UOCに渡さないですべて破棄します。
なお,2重書き込みの防止は,次のどちらかの場合に行います。
-
データ連携支援の開始モードが再開始の場合
-
データ連携支援の開始モードが強制開始で,SHMIDオペランドに指定した共有メモリが参照できた(マシンダウンしていない)場合
データ連携支援中断時の抽出位置とDBキューへの書き込み位置の関係を次の図に示します。
中断位置 |
再開始時の抽出位置 (反映先指定UOCに渡すデータ) |
再開始時のDBキュー書き込み位置 (編集UOCに渡すデータ) |
---|---|---|
1.〜4. |
1-1から |
1-1から |
5. |
1-1から |
3-1から |
6. |
3-1から |
3-1から |
(j) 書き込み障害時のリトライ
DBキューへの書き込みが失敗した際に,失敗要因によってDBキューへの書き込みをリトライします。失敗要因ごとのリトライ動作を次の表に示します。
項番 |
書き込み失敗要因 |
リトライ動作 |
備考 |
---|---|---|---|
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)に応答情報を設定し,応答を返します。
設定可能な応答値を次の表に示します。
項番 |
応答値 |
挙動 |
---|---|---|
1 |
0 |
データ連携支援を続行します。 |
2 |
20 |
データ連携支援を自動再実行要で中断します。 |
3 |
上記以外 |
データ連携支援を中断します。 |
応答値はサイズ4バイトの数値で指定し,かつ応答の長さに4を指定してください。ただし,数値はネットワークバイトオーダー形式で指定してください。
相手プロセス未起動などでRPCに失敗した場合も,データ連携支援を中断します。再開始時は該当UJから処理を開始します。
(4) ユーザ任意処理
反映先指定UOCで指定した反映サービスがユーザ任意処理の場合(-tオプションにusrを指定),反映処理としてデータ連携支援がユーザ任意処理を呼び出します。実行する処理は,trnrks_service定義コマンドで指定した反映UOCをデータ連携支援が実行します。反映UOC内ではSQL処理,RPC送信が可能です。
データ連携支援が中断し再開始した場合,データ連携支援が2重入力を行うことがあるため,UOC内で2重入力を考慮した制御をする必要があります。