メッセージ取出し機能は、システム内で取得した利用ジャーナルを一括して一般ファイルに取り出す機能です。
メッセージ取出しはtjnlgetmsgコマンドで行います。tjnlgetmsgコマンドの詳細は"12.10.3.15 tjnlgetmsg(利用ジャーナルを取り出す) "を参照してください。
以下にtjnlgetmsgコマンドの入力例を示します。
--------------------------------------------------------
tjnlgetmsg -f /tjnl/data/datafile QUE01
--------------------------------------------------------
--------------------------------------------------------
tjnlgetmsg -f c:\tjnl\data\datafile QUE01
--------------------------------------------------------
メッセージ取出し機能について説明します。
メッセージ取出しコマンドは、指定されたメッセージキューに蓄積されている利用ジャーナルをすべて取り出します。ただし、以下の要因によってすべてのメッセージが取り出されないことがあります。
ジャーナル・チェックポイント
未完結のトランザクション
メッセージ数
メッセージサイズ
メッセージキューにジャーナル・チェックポイントが格納されている場合は、ジャーナル・チェックポイントまでの利用ジャーナルが一般ファイルに取り出されます。ただし、ジャーナル・チェックポイントのメッセージはファイルに取り出されません。
"図12.24 ジャーナル・チェックポイントが格納されている場合のメッセージの取出し例"にジャーナル・チェックポイントが格納されている場合のメッセージの取出し例を示します。
メッセージ取出しは、原則としてジャーナル取得時のトランザクション単位に行われます。したがって、同一トランザクションで取得した最後の利用ジャーナルがメッセージキューに配付されていない場合は、そのトランザクションの利用ジャーナルは取り出されません。
"図12.25 未完結のトランザクションが存在する場合のメッセージ取出し例"に未完結のトランザクションが存在する場合のメッセージ取出し例を示します。
メッセージ取出しコマンドが一度に取り出すメッセージ件数は8000件までです("図12.26 メッセージ数によるメッセージ取出し例"のケース1)。これを超えるメッセージがメッセージキューに配付されている場合は、以下のようになります。
8000件を超えたトランザクションの最後の利用ジャーナルが8192件以内に存在する場合には、そのトランザクションの最後の利用ジャーナルまでを取り出す。("図12.26 メッセージ数によるメッセージ取出し例"のケース2およびケース3)
8192件以内にトランザクションの最後の利用ジャーナルが存在しない場合には、8000件までで最も8000件に近いトランザクションの最後の利用ジャーナルまでを取り出す。("図12.26 メッセージ数によるメッセージ取出し例"のケース4)
1つのトランザクションで取得された利用ジャーナルが8192件を超えるメッセージからなる場合は、8192件までの完結している最後の利用ジャーナルのメッセージまでを取り出す。("図12.26 メッセージ数によるメッセージ取出し例"のケース5)
"図12.26 メッセージ数によるメッセージ取出し例"にメッセージ数によるメッセージ取出し例を示します。
メッセージ取出しコマンドが一度に取り出すメッセージサイズは、1トランザクションで送受信するメッセージ長の合計の最大値によって決まります。1トランザクションで送受信するメッセージ長の合計の最大値は、TRMの環境作成時に指定した値です。詳細は"第17章 環境作成"を参照してください。
メッセージ取出しコマンドが一度に取り出すメッセージサイズは、{1トランザクションで送受信するメッセージ長の合計の最大値-4}[MB](以降、ポイントAとします)までです("図12.27 サイズによるメッセージ取出し例"のケース1)。これを超えるメッセージがメッセージキューに配付されている場合は、以下のようになります。
ポイントAを超えたトランザクションの最後の利用ジャーナルが1トランザクションで送受信するメッセージ長の合計の最大値(以降、ポイントBとします)以内に存在する場合には、そのトランザクションの最後の利用ジャーナルまでを取り出す。("図12.27 サイズによるメッセージ取出し例"のケース2およびケース3)
ポイントB以内にトランザクションの最後の利用ジャーナルが存在しない場合には、ポイントAまでで最もポイントAに近いトランザクションの最後の利用ジャーナルまでを取り出す。("図12.27 サイズによるメッセージ取出し例"のケース4)
1つのトランザクションで取得された利用ジャーナルがポイントBを超えるメッセージからなる場合は、ポイントBまでの完結している最後の利用ジャーナルのメッセージまでを取り出す。("図12.27 サイズによるメッセージ取出し例"のケース5)
"図12.27 サイズによるメッセージ取出し例"にサイズによるメッセージ取出し例を示します。
メッセージ取出しコマンドでは、メッセージから利用ジャーナルのみを取り出してファイルに格納します。したがって、以下のデータはファイルに取り出されません。
メッセージヘッダ
ジャーナルヘッダ
"図12.28 図:ファイルのデータ形式"にメッセージ取出しコマンドで作成されるファイルのデータ形式を示します。なお、利用ジャーナルのデータ形式は"第14章 データ形式"を参照してください。
ただし、利用ジャーナルにジャーナル・チェックポイントの項目が含まれる場合、メッセージ取出しコマンドは、利用ジャーナルからジャーナル・チェックポイントの項目を除いて取り出します。
取得定義でジャーナル・チェックポイントが定義されていて、配付定義で圧縮しない指定をしている場合、メッセージキューに配付される利用ジャーナルにはジャーナル・チェックポイントの項目が最終項目として付加されますが、メッセージ取出しコマンドが作成したファイルには格納されません。また、レコード制御部のレコード長は、ジャーナル・チェックポイント項目の長さを除いた長さを設定します。
圧縮についての詳細は"14.2.2 圧縮"を、レコード制御部の詳細は、"14.1.2.1 レコード制御部"を参照してください。
"図12.29 ジャーナル・チェックポイントが定義されている場合のファイルのデータ形式"に取得定義でジャーナル・チェックポイントが定義されている場合のファイルのデータ形式を示します。
メッセージ取出しの途中にシステムダウンなどの異常が発生した場合に備えて、メッセージ取出しコマンドは、以下の名前のファイルにメッセージを一時的に格納します。
{メッセージ取出しコマンドで指定されたファイル名}.{TRMシステム名}MQDMQD |
メッセージ取出しコマンドが1回の操作で取り出すメッセージを取り出し終えた時点で、指定されたファイル名に変更します。
メッセージ取出しコマンドの実行中にシステムダウンなどの異常が発生した場合は、以下の点に注意してください。
指定したファイル名のファイルが作成されていない場合は、メッセージ取出しが完了していません。再度メッセージ取出しコマンドを実行してください。
指定したファイル名のファイルが作成されている場合でも、取り出したメッセージがメッセージキューから削除されていないことがあるため、別の名前を指定してメッセージ取出しコマンドを実行した後、前回の実行時に作成されたファイルとデータの内容を比較してください。前回の実行時に作成されたファイルと同じ内容のデータが含まれる場合には、今回の実行時に作成されたファイルを使用し、前回の実行時に作成されたファイルは破棄してください。データの内容が異なる場合には、両方のファイルを使用してください。