リモート・キューのローカル定義の作成
リモート・キューのローカル定義は、リモート・キュー・マネージャー上のキューを参照するローカル・キュー・マネージャー上の定義です。
ローカル位置からリモート・キューを定義する必要はありませんが、ローカルに定義する利点は、アプリケーションが、リモート・キューがあるキュー・マネージャーの ID によって修飾された名前を指定しなくても、ローカルに定義された名前によってリモート・キューを参照できることです。
リモート・キューのローカル定義の働きについて理解する
アプリケーションは、ローカル・キュー・マネージャーに接続し、その後 MQOPEN 呼び出しを出します。 オープン呼び出しで指定されるキュー名は、ローカル・キュー・マネージャー上の リモート・キュー定義のキュー名です。 リモート・キュー定義は、ターゲット・キューの名前、ターゲット・キュー・マネージャーの名前、および任意で伝送キューの名前を提供します。 リモート・キューにメッセージを書き込むためには、アプリケーションは、MQPUT 呼び出しから戻されたハンドルを指定して、MQPUT 呼び出しを出します。 キュー・マネージャーは、リモート・キュー名およびリモート・キュー・マネージャー名を、メッセージの先頭につく伝送ヘッダーで使用します。 この情報は、ネットワーク内の正しい宛先にメッセージを転送するために使用されます。
管理者は、リモート・キュー定義を変更することにより、メッセージの宛先を制御できます。
以下の例は、アプリケーションが、リモート・キュー・マネージャーが所有しているキューにメッセージを入れる方法を示しています。 アプリケーションは、キュー・マネージャー (saturn.queue.manager
など) に接続します。 ターゲット・キューは、別のキュー・マネージャーが所有しています。
MQOPEN 呼び出しで、アプリケーションは次のフィールドを指定します。
フィールド値 | 説明 |
---|---|
ObjectName CYAN.REMOTE.QUEUE |
リモート・キュー・オブジェクトのローカル名を指定します。 これはターゲット・キューおよびターゲット・キュー・マネージャーを定義します。 |
ObjectType (キュー) |
このオブジェクトをキューと識別します。 |
ObjectQmgrName ブランクまたは saturn.queue.manager |
このフィールドの指定はオプションです。 ブランクの場合、ローカル・キュー・マネージャーの名前と見なされます。 (これは、リモート・キュー定義が存在するキュー・マネージャーです。) |
この後、アプリケーションはこのキューにメッセージを書き込むために、MQPUT 呼び出しを出します。
DEFINE QREMOTE (CYAN.REMOTE.QUEUE) +
DESCR ('Queue for auto insurance requests from the branches') +
RNAME (AUTOMOBILE.INSURANCE.QUOTE.QUEUE) +
RQMNAME (jupiter.queue.manager) +
XMITQ (INQUOTE.XMIT.QUEUE)
QREMOTE (CYAN.REMOTE.QUEUE)
- リモート・キュー・オブジェクトのローカル名を指定します。 これは、このキュー・マネージャーに接続するアプリケーションが、 AUTOMOBILE.INSURANCE.QUOTE.QUEUE リモート・キュー・マネージャー上の
jupiter.queue.manager
キューをオープンするために、 MQOPEN (オープン) 呼び出しで指定する必要がある名前です。 DESCR ('Queue for auto insurance requests from the branches')
- キューの用途を説明する追加テキストを提供します。
RNAME (AUTOMOBILE.INSURANCE.QUOTE.QUEUE)
- リモート・キュー・マネージャーのターゲット・キューの名前を指定します。 これは、アプリケーションが送信する、キュー名 CYAN.REMOTE.QUEUE を指定したメッセージの実際のターゲット・キューです。 キュー AUTOMOBILE.INSURANCE.QUOTE.QUEUE を、ローカル・キューとして リモート・キュー・マネージャーに定義する必要があります。
RQMNAME (jupiter.queue.manager)
- ターゲット・キュー AUTOMOBILE.INSURANCE.QUOTE.QUEUE を所有するリモート・キュー・マネージャーの名前を指定します。
XMITQ (INQUOTE.XMIT.QUEUE)
- 伝送キューの名前を指定します。 この指定はオプションです。伝送キューの名前を指定しないと、リモート・キュー・マネージャーと同じ名前のキューが使用されます。
いずれの場合でも、伝送キューであることを指定する Usage 属性 (MQSC コマンドに USAGE(XMITQ) を指定) を持つローカル・キューとして、該当する伝送キューを定義する必要があります。
リモート・キューにメッセージを書き込む代替方法
リモート・キューのローカル定義を使用する方法以外にも、リモート・キューにメッセージを書き込む方法があります。 アプリケーションは、リモート・キュー・マネージャー名を含んでいる完全なキュー名を、MQOPEN 呼び出しの一部として指定することができます。 この場合、リモート・キューのローカル定義は不要です。 ただし、この場合、アプリケーションがリモート・キュー・マネージャーの名前を認識しているか、あるいは実行時にリモート・キュー・マネージャーの名前にアクセスできなければなりません。
リモート・キューに関してその他のコマンドを使用する
- リモート・キューの属性を表示する。
DISPLAY QUEUE (CYAN.REMOTE.QUEUE)
- 書き込みを有効にするためにリモート・キューを変更する。 これは、ターゲット・キューには影響を与えません。このリモート・キューを指定するアプリケーションのみに影響を与えます。
ALTER QREMOTE (CYAN.REMOTE.QUEUE) PUT(ENABLED)
- このリモート・キューを削除する。 これは、ターゲット・キューに影響を与えません。そのローカル定義にのみ影響を与えます。
DELETE QREMOTE (CYAN.REMOTE.QUEUE)