MQSeries 関連の EGL キーワード

MQSeries 関連の EGL キーワード (例えば addscan) を使用するときは、アクセス対象のそれぞれのメッセージ・キューごとに MQ レコードを定義します。レコード・レイアウトは、メッセージの形式です。

キーワードは次の表のとおりです。

キーワード 用途
add 指定され たキューの末尾に MQ レコードの内容を追加する

EGL add 文では、以下の 3 つの MQSeries® コマンドが呼び出されます。
  • MQCONN は、生成されたコードをキュー・マネージャーに接続する。これは、アクティブな接続が存在しない場合に呼び出されます。
  • MQOPEN は、キューとの接続を確立する。これは、接続がアクティブであるが キューがまだ開いていない場合に呼び出されます。
  • MQPUT は、レコードをキューに入れる。これは、それ以前の MQSeries 呼び出しでエラーが発生していない限り、常に呼び出されます。

MQ レコードを追加した後は、メッセージ・キューから MQ レコードを読み取る 前に、そのキューを閉じる必要があります。

close MQ レコ ードに関連付けられたメッセージ・キューへのアクセスを解放する

EGL close 文では、MQSeries MQCLOSE コマンドが呼び出されます。このコマンドは、プログラム終了時にも自動的に呼び出されます。

別のプログラムがメッセージ・キューにアクセスする必要がある場合には、add または scan を実行した後でそのキューを閉じなければなりません。特に、プログラムが長い時間にわたって実行され、アクセスを必要としなくなった場合には、close を使用すると良いでしょう。
scan キュー内の最初のメッセージをメッセージ・キュー・レコードの中に読み込んで、(デフォルトでは) そのメッセージをキューから除去する

EGL scan 文では、以下の 3 つの MQSeries コマンドが呼び出されます。
  • MQCONN は、生成されたコードをキュー・マネージャーに接続する。これは、アクティブな接続が存在しない場合に呼び出されます。
  • MQOPEN は、キューとの接続を確立する。これは、接続がアクティブであるが キューがまだ開いていない場合に呼び出されます。
  • MQGET は、レコードをキューから除去する。これは、それ以前の MQSeries 呼び出しでエラーが発生していない限り、常に呼び出されます。

MQ レコードを読み取った後は、メッセージ・キューに MQ レコードを追加する 前に、そのキューを閉じる必要があります。

マネージャーとキューの指定

MQSeries 関連の EGL キーワードを使用するときは、以下のような状況におい てキューを指定します。
  • 宣言時に論理キュー名を指定します。これを行うには、MQ レコード・パー ツの queueName プロパティーを設定します。その論理キュー名は、実行時にア クセスされるキュー名のデフォルトとして機能します。ただし、多くの場合、キュー名は MQ レコードを物理キューと関連付ける手段としてのみ意味を持ちます。論理キュー名は 8 文字以内で指定できます。
  • 生成時には、buildDescriptor パーツを使用して生成プロセスを制御し ます。buildDescriptor パーツはリソース関連パーツを参照することができます。リソース関連パーツは、キュー 名を物理キューの名前に関連付けます。
  • 実行時に、レコード固有の変数 record.resourceAssociation を変更することによって、 (宣言時または生成時に指定済みの) 任意のキュー名をオーバーライドできます。
物理キューの名前は以下の形式になります。
  queueManagerName:physicalQueueName
queueManagerName
キュー・マネージャーの名前。この名前を省略すると、コロンも省略されま す。
physicalQueueName
物理キューの名前。指定したキュー・マネージャーによって認識される名前です。

あるメッセージ・キュー・レコードに対して初めて add または scan 文を実行するときは、接続を行うキュー・マネージャー (デフォルトまたはそれ以外) を指定する必要があります。最も単純なケースでは、接続を行うキュー・マネージャーをまったく指定せずに、MQSeries 構成のデフォルト値を使用できます。

レコード固有の変数 record.resourceAssociation には、 特定の MQ レコードについて少なくともメッセージ・キュー名が常に含まれます。

リモート・メッセージ・キュー

リモート・キュー・マネージャーによって制御されるキューにアクセスするには、以下のようにする必要があります。
  • EGL close 文を発行して、現在使用中のキューへのアクセスを解放する
  • レコード固有の変数 record.resourceAssociation を設定して、リモート・キューに後でアクセスできるようにする
record.resourceAssociation を設定するには、キューとマネージャーの関係が MQSeries で設定されている仕方に応じて、以下の 2 つの方法のいずれかを使用します。
  • 接続するキュー・マネージャーでリモート・キューがローカル定義されている場合は、record.resourceAssociation を以下のように設定します。
    • 接続するキュー・マネージャーと同じ値を受け入れる (接続するキュー・マネージャーの名前を指定するか、名前を指定しない。後者の場合はコロンを省略する。)
    • リモート・キューのローカル定義の名前を指定する。

    この次に add または scan 文を使用するとき、MQOPEN が発行されて、リモート・キューへのアクセスが確立されます。

  • または、リモート・キュー・マネージャーの名前、およびリモート・キューの名前を使用し てrecord.resourceAssociation を設定する。この場合、接続するキュー・マネージャーは変わりません。この次に add または scan 文を使用するとき、MQOPEN が発行されて、既存の接続が使われます。
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.