Hitachi

OpenTP1 Version 7 メッセージキューイングアクセス機能 TP1/Message Queue Access 使用の手引


2.2.2 MQCクライアント機能の環境変数のオペランド

MQCクライアント機能を使用するための環境を定義します。

〈この項の構成〉

(1) 環境変数のオペランド(共通)

ここでは,UNIXでボーンシェルを使用する場合の形式で表記しています。

・DCMQCSRVHOSTNAME = 窓口となるMQCリスナサーバのホスト名

〜<1〜255バイトの文字列>

窓口となるMQCリスナサーバのホスト名を指定します。

このホスト名は,ドメインネームサーバ(DNS)またはホスト名ファイルに登録されている必要があります。この環境変数には途中に空白文字を含んだ文字列を指定しないでください。途中に空白文字を含んだ文字列を指定した場合,システムログにKFCA30951-Eメッセージが出力され,MQCリスナサーバへの接続に失敗します。DCMQCSRVHOSTIPで窓口となるMQCリスナサーバのIPアドレスを指定した場合は,この指定は省略できます。DCMQCSRVHOSTNAMEとDCMQCSRVHOSTIPの両方を指定した場合は,DCMQCSRVHOSTIPの指定が優先されます。

・DCMQCSRVHOSTIP = 窓口となるMQCリスナサーバのIPアドレス

〜(nnn.nnn.nnn.nnn)((0〜255))

窓口となるMQCリスナサーバのIPアドレスを指定します。

指定形式は,nnn.nnn.nnn.nnnです。nnnの値をピリオド(.)で区切って指定します。nnnの値は,10進数で0から255まで指定できます。また,先頭に0を指定した場合は,8進数値として扱われます。例えば,10を010と指定するとシステムは8が指定されたと認識するので注意してください。

DCMQCSRVHOSTNAMEで窓口となるMQCリスナサーバのホスト名を指定した場合,この指定は省略できます。DCMQCSRVHOSTNAMEとDCMQCSRVHOSTIPの両方を指定した場合は,DCMQCSRVHOSTIPの指定が優先されます。

・DCMQCSRVSERVNAME = 窓口となるMQCリスナサーバのサービス名

〜<1〜32バイトの文字列>

窓口となるMQCリスナサーバのサービス名を指定します。

このサービス名は,サービス名ファイルに登録されている必要があります。この環境変数には途中に空白文字を含んだ文字列を指定しないでください。途中に空白文字を含んだ文字列を指定した場合,システムログにKFCA30951-Eメッセージが出力され,MQCリスナサーバへの接続に失敗します。DCMQCSRVPORTで窓口となるMQCリスナサーバのポート番号を指定した場合は,この指定は省略できます。DCMQCSRVPORTとDCMQCSRVSERVNAMEの両方を指定した場合は,DCMQCSRVPORTの指定が優先されます。

サービス名は,サービス名ファイルに次の形式で指定します。

サービス名       ポート番号/TCP
・DCMQCSRVPORT = 窓口となるMQCリスナサーバのポート番号

〜<符号なし整数>((5001〜65535))

窓口となるMQCリスナサーバのポート番号を指定します。

DCMQCSRVSERVNAMEで窓口となるMQCリスナサーバのサービス名を指定した場合は,この指定は省略できます。DCMQCSRVPORTとDCMQCSRVSERVNAMEの両方を指定した場合は,DCMQCSRVPORTの指定が優先されます。

・DCMQCCLTHOSTIP = 自システムのIPアドレス

〜(nnn.nnn.nnn.nnn)((0〜255))

自システムのIPアドレスを指定します。

指定形式は,nnn.nnn.nnn.nnnです。nnnの値を".(ピリオド)"で区切って指定します。nnnの値は,10進数で0から255まで指定できます。また,先頭に0を指定した場合は,8進数値として扱われます。例えば,10を010と指定するとシステムは8が指定されたと認識するので注意してください。

この指定は省略できます。省略した場合は,自システムから自動的に検出されたIPアドレスでMQCリスナサーバおよびMQCゲートウェイサーバに接続します。

・DCMQCCLTPORT = 自システムのポート番号

〜<符号なし整数>((5001〜65535))

自システムのポート番号を指定します。

OSが自動割り当てするポート番号の範囲外で,かつほかのプログラムが使用しない番号を指定してください。OSが自動割り当てするポート番号は,OSの種別やOSのバージョンなどによって異なります。詳細は,OSのマニュアルを参照してください。

・DCMQCTIMEREQ = MQCリスナサーバまたはMQCゲートウェイサーバからの結果応答受信監視タイマ値

〜<符号なし整数>((10〜65535))《180》(単位:秒)

MQCクライアント機能からMQCリスナサーバ,またはMQCゲートウェイサーバへ要求を送ってから応答が返るまでの待ち時間を指定します。

MQGMO_WAITオプションを指定したMQGET命令の場合には,次に示すどちらか小さい方の値が指定時間に加算されます。

  • DCMQCTIMEGETで指定した時間

  • (MQGET命令のオプションであるWaitIntervalフィールドの値)

    −(MQGET命令発行からの経過時間)

指定時間を過ぎても応答が返らない場合は,API実行がエラーリターンします。

DCMQCTIMEGET = MQCゲートウェイサーバでのMQGET命令の待ち合わせ最大時間

〜<符号なし整数>((1〜60))《1》(単位:秒)

メッセージを取り出す場合に,MQCゲートウェイサーバで発行するMQGET命令の待ち合わせ最大時間を指定します。

MQGET命令のオプションであるWaitIntervalフィールドの値が,DCMQCTIMEGETで指定した値より小さい場合,MQCゲートウェイサーバはWaitIntervalフィールドの値でMQGET命令を発行します。

MQGET命令のオプションであるWaitIntervalフィールドの値が,DCMQCTIMEGETで指定した値より大きい場合,MQCゲートウェイサーバはDCMQCTIMEGETで指定した値でMQGET命令を発行します。

時間内にメッセージが取り出せない場合,MQCゲートウェイサーバは次に示すどちらか小さい方の値で再度,MQGET命令を発行します。

  • DCMQCTIMEGETで指定した時間

  • (MQGET命令のオプションであるWaitIntervalフィールドの値)−(MQGET命令発行からの経過時間)

このオペランドは,MQGET命令でMQGMO_WAITオプションを指定した場合だけ有効です。

・DCMQCTIMESEG = MQCリスナサーバまたはMQCゲートウェイサーバからの継続セグメント受信監視タイマ値

〜<符号なし整数>((10〜65535))《30》(単位:秒)

MQCリスナサーバからの応答がセグメント分割される場合に,継続セグメントを受信する時間を指定します。

・DCMQCTIMECON = MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行時間

〜<符号なし整数>((10〜180))《10》(単位:秒)

MQCクライアントがMQCリスナサーバまたはMQCゲートウェイサーバとの間にTCP/IPコネクションを確立する際に,接続を試行する最大時間を指定します。

MQCクライアントは,TCP/IPコネクションの確立を試行したあと,次に試行するまでの間隔を,1ミリ秒から始めて順に2倍ずつ増やし,最大1秒間隔となるまで延ばします。つまり,1ミリ秒,2ミリ秒,4ミリ秒,8ミリ秒,…,512ミリ秒,1秒と間隔を延ばし,以降は1秒間隔で試行を続けます。

DCMQCTIMECONに指定する時間は,このTCP/IPコネクションの再試行間隔の合計時間を意味します。TCP/IPコネクションの確立を試行し始めてから,この時間分の再試行を繰り返してもコネクションを確立できなかったときAPIはエラーリターンします。

この指定を省略すると,最小値10が設定されます。10未満の値を指定した場合は,設定値は最小値10に変更され,180より大きな値を指定した場合は,設定値は最大値180に変更されます。

・DCMQCSEGSIZE = 転送時のセグメントサイズ

〜<符号なし整数>((1024〜131071))《16384》(単位:バイト)

要求または応答をセグメント分割で送受信する場合の転送セグメントサイズを指定します。TCP/IPウィンドサイズは,転送時のセグメントサイズの2倍のサイズで指定されます。

TCP/IPウィンドウサイズは,このオペランドで指定する転送セグメントサイズを2倍した値で取得されます。また,TCP/IPのsetsockopt関数で取得されるウィンドウサイズをサポートしていないシステムでは,APIの実行時にエラーリターンする場合があります。この場合は,システムで指定できるウィンドウサイズの範囲を調査の上,このオペランドで指定する転送セグメントサイズを変更してください。

・DCMQCAPITRCOUT = APIトレースディスク出力要否

〜{ON | OFF}《OFF》

APIトレース情報の取得を指定します。

  • ON:APIトレース情報が取得されます。

  • OFF:APIトレース情報は取得されません。

この指定は省略できます。省略した場合はAPIトレース情報は取得されません。

APIトレース情報を取得するとカレントディレクトリにAPIトレースファイルが作成されます。ファイル名は次のようになります。

mpc.api.ppp.n

ppp:プロセスID

n:0 〜(指定ファイル数-1)

・DCMQCAPITRCFILNUM = APIトレースファイル数

〜<符号なし整数>((5〜65536))《5》

APIトレース情報を取得する場合のAPIトレースファイルの数を指定します。この指定は,DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

この指定は省略できます。省略した場合は5が設定されます。

・DCMQCAPITRCSIZE = APIトレース容量(エントリ数)

〜<符号なし整数>((1024〜65536))《1024》

APIトレース情報を取得する場合のAPIトレースファイルの最大エントリ数を指定します。1エントリは232バイトです。このエントリ数を超えるAPIトレース情報の書き込みが発生すると,APIトレース情報は折り返します。この指定は,DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

この指定は省略できます。省略した場合は1024が設定されます。

・DCMQCAPITRCWRITE = APIトレース出力単位(エントリ数)

〜<符号なし整数>((0〜1024))

UNIXの場合《0》

APIトレース情報を取得する場合のAPIトレースの出力単位を指定します。このエントリ数のAPIトレース情報の取得,最大エントリ数分のAPIトレース情報の取得,またはMQDISC命令の発行を契機に,APIトレース情報の書き込みが発生します。この指定は,DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

APIトレースは,MQCONN命令からMQDISC命令までが取得されます。また,同一プロセス内で複数回MQCONN命令を発行し,それぞれのコネクションハンドルに対して,MQDISC命令を発行した場合,コネクションハンドルに関係なく,最初に発行したMQCONN命令から最後のMQDISC命令までが取得されます。

この指定は省略できます。省略したときの値はOSの種別によって異なります。UNIXでは0が設定され,最大エントリ数分のAPIトレース情報の取得,またはMQDISC命令の発行を契機に,APIトレース情報の書き込みが発生します。

JMSインタフェース使用時の注意

JMSインタフェースを使用する場合,リソースアダプタのプロパティ定義には,あらかじめDCMQCAPITRCWRITEの値に1が設定されています。必要に応じて変更してください。

・DCMQCEXPTRN =トランザクション処理方式の拡張要否

〜{Y | N}《Y》

このオペランドは,使用しているTP1/Message Queue Accessのバージョンでは必要ありません。通常は省略してください。ただし,指定してもエラーにはなりません。

このオペランドは,過去のバージョンで作成された定義との互換性のためだけに指定できます。

(2) 環境変数のオペランド(JMSインタフェース用)

・ModelQueueName = TemporaryQueueオブジェクト生成時のモデルキュー定義

〜<java.lang.String型の文字列>

TemporaryQueue(動的キュー)を生成する場合のモデルキュー名を指定します。

48文字を超える文字列が指定された場合,超えた部分は切り捨てられます。

また,モデルキュー以外のキュー名は指定しないでください。モデルキュー以外のキュー名を指定した場合の動作は保証されません。

・TraceLevel = JMSAPIトレース情報の出力レベル

〜<java.lang.Integer型の符号なし整数>((0〜4))《3》(単位:トレース出力レベル)

JMSAPIトレース情報の出力レベルを指定します。

上記以外の値を指定すると出力レベル3(デフォルト)に相当するトレース情報が出力されます。

JMSAPIトレース情報の出力レベルの詳細については,「2.4.3 JMSAPIトレースファイルの出力形式」を参照してください。

・PrfTraceLevel = JMSPRFトレース情報の取得レベル

〜<java.lang.Integer型の符号なし整数>((0〜1))《1》(単位:トレース取得レベル)

JMSPRFトレース情報の取得レベルを指定します。

上記以外の値を指定すると取得レベル1(デフォルト)に相当するトレース情報が取得されます。

JMSPRFトレース情報の取得レベルの詳細については,「2.4.4 JMSPRFトレースファイルの取得形式」を参照してください。

・QueueConfigFileName = キュー定義ファイル名

〜<java.lang.String型の文字列>

キュー定義ファイル名をフルパスで指定します。

このキュー定義ファイルは,JMSインタフェースを使用する場合だけ必要なファイルです。

指定したキュー定義ファイルの読み込みに失敗した場合は,TP1/Message Queue Accessの起動に失敗します。キュー定義ファイルの作成方法については,「2.2.3 キュー定義ファイルの作成(JMSインタフェース用)」を参照してください。

・StrictXaStart = ユーザトランザクション開始と同時にMQCサーバでトランザクションを開始するか

〜{ON | OFF}《OFF》

ユーザトランザクション開始と同時にMQCサーバでトランザクションを開始するかどうかを指定します。

  • ON:トランザクションを開始します。

  • OFF:同時には開始しないで,必要になったときに開始します。

この指定は省略できます。省略した場合はOFFを指定したものとして扱われます。

この環境変数にOFFを指定した場合,ユーザトランザクション開始と同時にMQCサーバでトランザクションは開始しません(最適化)。次のどれかのメソッドを発行した時点で,初めてMQCサーバ側にトランザクションが発生します。

  1. QueueSender.send()

  2. QueueReceiver.receive()

  3. QueueReceiver.receiveNoWait()

通常OFFの動作で問題が発生することはありませんが,次に示す利用方法で使用する場合には問題が発生します。

  • 1相コミット環境で,ユーザトランザクションを開始してからコミットするまでの間に,MQCサーバのトランザクションを発生させるための上記メソッド(1〜3)を発行しない場合,最適化の影響からユーザトランザクションがロールバック決着します。

この場合はStrictXaStartにONを指定することで回避できます。

ただし,StrictXaStartにONを指定した場合,次のような影響があります。

  • xa_start時の最適化が無効になり,MQCサーバとの通信が発生します。このため,StrictXaStartにOFFを指定した場合に比べて性能が低下します。

  • MQCサーバ側でのトランザクション発生契機が変わるため,次に示すタイマ値の再設計が必要です。

    再検討が必要なタイマ

     次に示すトランザクションサービス定義のオペランドなど,トランザクション開始から監視をするタイマ値の再検討が必要です。

     ・trn_expiration_time

     ・trn_completion_limit_time

     ・trn_cpu_time

     ・trn_limit_time

StrictXaStartにONを指定する場合は,上記影響を考慮の上で使用してください。

(3) 環境変数のオペランド(接続先情報定義ファイルのキューマネジャ接続用)

・DCMQCDEFCON = 接続先情報定義ファイル読み込み要否

〜{Y | N}《N》

接続先情報定義ファイルを読み込むかどうかを指定します。

  • Y:接続先情報定義ファイルを読み込みます。この指定によって,接続先情報定義ファイルに設定されている複数のMQサーバに接続できます。ただし,接続先情報定義ファイルに設定できるキューマネジャ構成定義は最大16です。それ以上設定しても有効になりません。

    接続先情報定義ファイルが読み込まれるのは,非XAライブラリのAPを使用しているときだけです。JMSインタフェース使用時に設定しても無効となります。

    接続先情報定義ファイルの読み込みを指定した場合は,MQCONN命令のName引数に,環境変数DCMQCMGRNAMEのオペランド値を指定してください。MQCONN命令でキューマネジャ名に空白を指定した場合は,MQRC_Q_MGR_NAME_ERR(2058)でエラーになります。

  • N:接続先情報定義ファイルを読み込みません。

接続先情報定義ファイルは,該当する接続先情報定義ファイルを使用しているユーザアプリケーションを終了しなくても修正できます。ただし,修正した値を有効にするには,該当する接続先情報定義ファイルを使用しているユーザアプリケーションの停止が必要です。

・DCMQCDEFCONPATH = 接続先情報定義ファイルのパス

〜<1〜256バイトの文字列>

接続先情報定義ファイルをフルパスで指定します。パスにはファイル名を含みます。パス名に日本語文字を指定した場合,OSによってシステムログにパス名が正しく表示されません。