メッセージ・キューに対する読み取りと書き込み
メッセージ・キューへの書き込みは EGL add ステートメントを使用し、メッセージ・キューからの読み取り は get next ステートメントを使用します。
プログラムで WebSphere® MQ レコードについて初めて EGL ステートメントを使用すると、EGL はキュー・マネージャーへのアクティブな接続があるかどうかを検査します。 ない場合には、1 つの接続を作成します。
メッセージ・キューに対して読み取りまたは書き込みを行った後で、変更のコミットまたはロールバックを行うことができます。
キュー・マネージャーへの接続
EGL プログラムで同時に接続できるのは 1 つのキュー・マネージャーのみです。
EGL は、プログラムの最初の add ステートメントまた は get next ステートメントでキュー・マネージャーに自動的に接続します。この際に、メッセージ・キュー・レコードに関連付けられたシステム・リソース名で指定されたキュー・マネージャー名を使用します。 キュー・マネージャー名が指定されていない場合は、ご使用のシステムに定義されている デフォルトのキュー・マネージャーが使用されます。 EGL は、プログラムの終了時に自動的にキュー・マネージャーから切断し、 開いているファイルをすべて閉じます。そして、作業単位がまだ開いている場合には、現在の作業単位をコミットします。
- 接続キュー・マネージャーとキューが属しているキュー・マネージャーが異なる 場合、MQCONN 関数呼び出しを使用して接続してから 、add ステートメント または get next ステートメントをプログラムで実行します。 その他の場合、add ステートメント または get next ステートメントは、システム・リソース名で 指定されたキュー・マネージャーへの接続を試行することなく、現在のオープン接続を使用します。
- 長時間稼働するプログラムのプログラム終了前に、キュー・マネージャーからそのプログラムを切断したい場合は、MQCONN 関数呼び出しを使用して初回の接続を行い、すべてのキュー・アクセスの 完了後に MQDISC 関数呼び出しを使用して切断します。
MQCONN および MQDISC について詳しくは 、直接 WebSphere MQ API 呼び出しの使用を参照してください。 ワークステーション環境 (Windows NT、OS/2、AIX®、Solaris、および HP) では、WebSphere MQ は、 プログラムがメッセージ・キュー・マネージャーと同じシステム上で稼働しているかどうかという点や 、サーバー・システム上のマネージャーと通信する WebSphere MQ クライアントとしてプログラムが稼働しているかどうかという点に応じて、WebSphere MQ プログラム用にさまざまなランタイム・ライブラリーを提供します。 AIX および HP システムでは、同様に、スレッド化環境および非スレッド化環境について、別々のライブラリーが提供されます。
キューへのメッセージの書き込み
- キューへの接続を確立する。
- キューへの接続を開く。
- メッセージをキューに入れる。
- add ステートメントを使用して、別のキュー・マネージャーの、キューにメッセージを書き込もうとしている。
- add ステートメントを使用して、以前にメッセージをキューに書き込んだ。
EGL は、今後の add ステートメントのために、接続ハンドルを保存します。
- get next ステートメントを使用する前。
- 別のプログラムによるアクセスのために、キューをリリースするため。
- 長時間稼働するプログラムがあり、そのプログラムのキューの処理が完了した場合に、 キューをリリースするため。
EGL は、プログラムの終了処理時に、キューへの接続を自動的に閉じます。
キューからのメッセージの読み取り
- キュー・マネージャーに接続していない場合、キュー・マネージャーに接続する。
- キューがまだ開いていない場合、キューを開く。
- キューから次のメッセージを取得する。
- get next ステートメントを使用して、別のキュー・マネージャーで、メッセージをキューから読み取っている。
- get next ステートメントを使用して、以前にキューからメッセージを読み取った。
- add ステートメントを使用する前。
- 別のプログラムによるアクセスのために、キューをリリースするため。
- 長時間稼働するプログラムがあり、そのプログラムのキューの処理が完了した場合に、 キューをリリースするため。
EGL は、プログラムの終了処理時に、キューへの接続を自動的に閉じます。
メッセージのコミットまたはロールバック
作業単位を定義するトランザクションでメッセージを結合するときに、 メッセージをグループとしてコミットするかロールバックすることができます。 作業単位がコミットされると、トランザクションに含まれるものはすべてファイナライズされます。 作業単位がロールバックされると、トランザクションに含まれるものはすべて除去されます。
- AS/400
- CICS® for MVS/ESA
- CICS for VSE/ESA
- IMS™
これらのトランザクション環境において、メッセージ・キューのコミットおよびロールバックは、2 フェーズ・コミット・プロトコルを使用して、DB2® データベースのようなその他のリカバリー可能 リソースのコミットおよびロールバックと連動します。
その他の環境では、別々のマネージャーのリソースはそれぞれ単独でコミットされます。 sysLib.commit() および sysLib.rollback() を使用すると、EGL は、コミットおよびロールバック用の適切な WebSphere MQ 呼び出しを自動的に実行します。