WebSphere MQ メッセージ・キュー・アクセス
EGL では、いずれのターゲット・プラットフォームにおいても、 WebSphere® MQ (以前の MQSeries®) メッセージ・キューのアクセスをサポートしています。
- WebSphere MQ 関連の EGL キーワード (add や get next など) を、MQRecord ステレオタイプを持つレコードに対して使用する。 この場合、EGL により WebSphere MQ の詳細が隠されるため、コードで扱っている業務上の問題に集中することができます。
- WebSphere MQ コマンドを直接呼び出す EGL 関数を呼び出す。 この場合、 EGL キーワードではサポートされないいくつかのコマンドが使用可能です。
これらの 2 つの方法をプログラム内で混在させることができます。ただし、ベスト・プラクティスとしては、 いずれか一方を排他的に使用します。
どちらの方法でも、オプション・レコードを使用することで、各種のランタイム条件を制御できます。 オプション・レコードは、特定の目的を持つグローバルな BasicRecord パーツに基づく変数のことです。 EGL は、呼び出し時のこれらの変数を WebSphere MQ へと渡します。EGL には多数のサンプル・レコード・パーツが用意されており、 それらのサンプルをオプション・レコードの基礎として使用することができます。
- EGL add および get next ステートメントを扱う場合、そのステートメントに関連した MQRecord パーツのプロパティーでオプション・レコードを識別します (MQRecord プロパティーを参照)。 特定のオプション・レコードを識別しなければ、EGL はデフォルトを使用します。
- WebSphere MQ を直接呼び出す EGL 関数を呼び出す場合は、 関数を呼び出す際に引数としてオプション・レコードを使用します。この場合、デフォルトは使用できません。
- An Introduction to Messaging and Queueing (GC33-0805–01)
- MQSeries MQI Technical Reference (SC33-0850)
- MQSeries アプリケーション・プログラミング・ガイド (SC88-7253-09)
- MQSeries アプリケーション・プログラミング・リファレンス (SC88-7354-05)
接続
- メッセージ・キューにアクセスする EGL add または get next ステートメント
- EGL 関数 MQCONN または MQCONNX の呼び出し。
一度にアクセスできる接続キュー・マネージャーは、1 つのみです。 ただし、 接続キュー・マネージャーの制御下にある複数のキューへアクセスすることができます。 現行の接続キュー・マネージャー以外のキュー・マネージャーに直接アクセスするには、 MQDISC を呼び出して最初のキュー・マネージャーから切断し、次に add、get next、MQCONN、または MQCONNX を呼び出して 2 番目のキュー・マネージャーに接続する必要があります。
また、リモート・キュー・マネージャー の制御下にあるキューへのアクセスも可能です。 リモート・キュー・マネージャーとは、接続キュー・マネージャーが対話することのできるキュー・マネージャーです。 2 つのキュー・マネージャー間でのアクセスは、 WebSphere MQ そのものがそのアクセスを許可するよう構成されている場合にのみ行えます。
接続キュー・マネージャーへのアクセスは、MQDISC の呼び出し時、またはコードの終了時に終了します。
トランザクションにメッセージを組み込む
- EGL get next ステートメント (または EGL MQGET 呼び出し) は、 コミットの発生時にのみメッセージを除去します。
- EGL add ステートメント (または EGL MQPUT 呼び出し) によりキューに置かれたメッセージは、コミットの発生後にのみ作業単位外で可視となります。
キュー・アクセス・ステートメントが作業単位内になければ、メッセージ・キューに対する各変更は即時コミットされます。
- MQGET の場合、MQGMO_SYNCPOINT
- MQPUT の場合、MQPMO_SYNCPOINT
- MQGET の場合、MQGMO_NO_SYNCPOINT
- MQPUT の場合、MQPMO_NO_SYNCPOINT
コードで作業単位が終了すると、EGL はプログラムがアクセスしているすべての リカバリー可能リソースをコミットまたはロールバックします (データベース・メッセージ・キュー、回復可能ファイルを含む)。 これは、システム関数 (sysLib.commit, sysLib.rollback) または WebSphere MQ への EGL 呼び出し (MQCMIT、MQBACK) のどちらを使用する場合にも起こります。 いずれの場合も、適切な EGL システム関数が呼び出されます。
EGL プログラムがエラーにより早く終了した場合、ロールバックが行われます。
カスタマイズ
add および get next ステートメントのデフォルトの処理を使用する代わりに、 WebSphere MQ との対話をカスタマイズすることができます。
- records.egl
- オプション・レコードのソースである BasicRecord パーツが含まれます。 また、これらのレコードが使用し、カスタム・オプション・レコードの開発をサポートする、 構造パーツも含まれます。
- functions.egl
- 次の 2 セットの関数を含みます。
- WebSphere MQ コマンド関数。これは、WebSphere MQ に直接アクセスします。
- 初期化関数。プログラムで使用するオプション・レコードに初期値を配置するために使用できます。
- mqrcode.egl、mqrc.egl、mqvalue.egl
- コマンドおよび初期化関数で使用される一連の EGL DataTable パーツを含みます。
次のタスクを実行する必要があります。
- 次のディレクトリーからファイルを EGL プロジェクトにインポートします。
sharedInstallationDir¥plugins¥ com.ibm.etools.egl.resources_version¥MqReusableParts- sharedInstallationDir
- 製品の共用インストール・ディレクトリー。例えば C:¥Program Files¥IBM¥SDP70Shared。 現在使用している製品をインストールする前に Rational® Developer 製品がインストール済みでこれを保持している場合は、 前のインストールによるディレクトリーを指定することが必要になる場合があります。
- version
- プラグインの最新バージョン。例えば、7.0.100.RFB_20080711_1614。
- プログラムでパーツをさらに簡単に使用しやすくするため、プログラムが含まれるファイル内に
1 つ以上の EGL
import ステートメントを記述します。インポートするファイルが、コードを開発するプロジェクトと別のプロジェクトにある場合は、
そのプロジェクトを参照していることを確認する必要があります。
詳しくは、import および use 文を参照してください。
- プログラム内でグローバル変数を宣言します。
- mqrc、mqrcode、および mqvalue DataTable の use 宣言を組み込みます。
- WebSphere MQ に渡す各オプション・レコードにつき、オプション・レコード・パーツを typedef として使用する基本レコードを宣言します。各パーツについての詳細は、MQRecord のオプション・レコードを参照してください。
- 関数内で、各レコードにつきインポートした EGL 初期化関数を呼び出して、 WebSphere MQ に渡すオプション・レコードを初期化します。各関数は、レコード・パーツ名に _INIT を続けた名前をとります。 例えば、 MQGMO_INIT。
- オプション・レコード内のフィールドの値を設定します。mqvalue DataTable には単一行のフィールドが含まれています。この各フィールドは、WebSphere MQ 資料に記述されているシンボルに対応します。オプション・レコード内のフィールドの値を設定するには、mqvalue DataTable 内のいずれかのフィールドを使用します。次に例を示します。
mqgmo.options = mqvalue.mqgmo_lock[1];値を追加することにより、オプション・レコードの数値フィールドに値の組み合わせを設定できます。次にこの例を示します。mqgmo.options = mqvalue.mqgmo_lock[1] + mqvalue.mqgmo_accept_truncated_msg[1] + mqvalue.mqgmo_browse_first[1]; - いつテーブルを生成する必要があるかについての詳細は、ターゲット・プログラムの言語が COBOL または Java™ のどちらであるかによって異なります。プログラムで使用されるすべてのデータ・テーブルを生成するため、 ビルド記述子オプション genTables がデフォルトで YES になるようにします。詳しくは、DataTable パーツを参照してください。
COBOL のみでサポートされる機能
- トリガー
- 配布リスト