3.4.4 DBキューの管理
(1) システム定義によるDBキューの関連づけ
DBキュー機能では,DBキュー機能関連定義の各種定義コマンドを使用して,次の図に示すようなDBキューの関連づけをします。
-
DBキューとDBキューグループの関連づけ
DBキュー名はdbqdef定義コマンドの-qオプションで,DBキューグループ名はdbqgrpdef定義コマンドの-dオプションで指定します。dbqdef定義コマンドの-dオプションで,DBキューをDBキューグループに関連づけます。
-
DBキューサービスとDBキューサービスグループの関連づけ
DBキューサービス名はdbqsrvdef定義コマンドの-vオプションで,DBキューサービスグループ名はdbqsvgdef定義コマンドの-pオプションで指定します。dbqsrvdef定義コマンドの-pオプションで,DBキューサービスをDBキューサービスグループに関連づけます。
-
DBキューグループと,DBキューサービスグループまたはサービスグループの関連づけ
DBキューグループは,DBキューサービスグループまたはサービスグループのどちらかと関連づけられます。両方と関連づけることはできません。
DBキューグループとDBキューサービスグループを関連づけるには,dbqsvgdef定義コマンドの-dオプションおよびdbqgrpdef定義コマンドの-pオプションを指定します。また,dbqsrvdef定義コマンドの-qオプションを指定すると,DBキューサービスとDBキューを関連づけることもできます。
DBキューグループとサービスグループを関連づけるには,dbqgrpdef定義コマンドの-eオプションを指定します。
(2) メッセージ書き込み要求時のDBキューとDBキューグループの指定
DBキューにメッセージを書き込むには,ee_dbq_msgput関数を呼び出します。ee_dbq_msgput関数では,メッセージの書き込み先としてDBキューまたはDBキューグループを指定できます。
-
DBキューを指定した場合
指定したDBキューにメッセージを書き込みます。
-
DBキューグループを指定した場合
指定したDBキューグループ下にある任意のDBキューにメッセージを書き込みます。メッセージを書き込むDBキューを決定する手順を次に示します。
-
DBキュー名(DBキュー機能関連定義のdbqgrpdef定義コマンドで指定)をキーにして,昇順にソートします。
-
ソートした順番で,前回書き込んだDBキューの次のDBキューにメッセージを書き込みます。
最後のDBキューに書き込んだ場合,次は先頭のDBキューに戻ります。
-
(a) DBキューの競合回避
DBキューの競合を避けるため,1トランザクションで書き込むDBキュー数を最小にします。
DBキューグループ指定のメッセージ書き込み要求を,1トランザクションで複数回行った場合,一つのDBキューにすべてのメッセージを書き込みます。
また,1トランザクションでDBキューグループ指定とDBキュー指定のメッセージ書き込み要求を行った場合,DBキュー指定で指定したDBキューにDBキューグループ指定で要求したメッセージを書き込みます。1トランザクションで複数のDBキュー指定の書き込み要求を行い,その後DBキューグループ指定の書き込み要求を行った場合,最初にDBキュー指定のメッセージ書き込み要求を行ったDBキューにDBキューグループ指定のメッセージを書き込みます。
(b) DBキューグループ指定で書き込んだメッセージの読み出し処理
DBキューを使用したユーザキューアクセスをしない場合にDBキューグループ指定でメッセージ書き込み要求を行ったときは,TP1/EEが選択した任意のDBキューに書き込みます。DBキューグループ指定でメッセージ書き込み要求を行い,特定のDBキューサービスで処理を行いたい場合は,DBキュー機能関連定義のdbqsrvdef定義コマンドでDBキューサービスを定義する際に,同一DBキューグループのDBキューを指定してください。