リモート・キューのローカル定義の作成

リモート・キューのローカル定義は、リモート・キュー・マネージャー上のキューを参照するローカル・キュー・マネージャー上の定義です。

ローカル位置からリモート・キューを定義する必要はありませんが、ローカルに定義する利点は、アプリケーションが、リモート・キューがあるキュー・マネージャーの ID によって修飾された名前を指定しなくても、ローカルに定義された名前によってリモート・キューを参照できることです。

リモート・キューのローカル定義の働きについて理解する

アプリケーションは、ローカル・キュー・マネージャーに接続し、その後 MQOPEN 呼び出しを出します。 オープン呼び出しで指定されるキュー名は、ローカル・キュー・マネージャー上の リモート・キュー定義のキュー名です。 リモート・キュー定義は、ターゲット・キューの名前、ターゲット・キュー・マネージャーの名前、および任意で伝送キューの名前を提供します。 リモート・キューにメッセージを書き込むためには、アプリケーションは、MQPUT 呼び出しから戻されたハンドルを指定して、MQPUT 呼び出しを出します。 キュー・マネージャーは、リモート・キュー名およびリモート・キュー・マネージャー名を、メッセージの先頭につく伝送ヘッダーで使用します。 この情報は、ネットワーク内の正しい宛先にメッセージを転送するために使用されます。

管理者は、リモート・キュー定義を変更することにより、メッセージの宛先を制御できます。

以下の例は、アプリケーションが、リモート・キュー・マネージャーが所有しているキューにメッセージを入れる方法を示しています。 アプリケーションは、キュー・マネージャー (saturn.queue.manager など) に接続します。 ターゲット・キューは、別のキュー・マネージャーが所有しています。

MQOPEN 呼び出しで、アプリケーションは次のフィールドを指定します。

フィールド値 説明
ObjectName CYAN.REMOTE.QUEUE リモート・キュー・オブジェクトのローカル名を指定します。 これはターゲット・キューおよびターゲット・キュー・マネージャーを定義します。
ObjectType (キュー) このオブジェクトをキューと識別します。
ObjectQmgrName ブランクまたは saturn.queue.manager このフィールドの指定はオプションです。

ブランクの場合、ローカル・キュー・マネージャーの名前と見なされます。 (これは、リモート・キュー定義が存在するキュー・マネージャーです。)

この後、アプリケーションはこのキューにメッセージを書き込むために、MQPUT 呼び出しを出します。

ローカル・キュー・マネージャーでは、次の MQSC コマンドを使用してリモート・キューのローカル定義を作成することができます。

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 呼び出しの一部として指定することができます。 この場合、リモート・キューのローカル定義は不要です。 ただし、この場合、アプリケーションがリモート・キュー・マネージャーの名前を認識しているか、あるいは実行時にリモート・キュー・マネージャーの名前にアクセスできなければなりません。

リモート・キューに関してその他のコマンドを使用する

MQSC コマンドを使用すると、リモート・キュー・オブジェクトの属性を表示または変更したり、リモート・キュー・オブジェクトを削除したりできます。 以下に例を示します。
  • リモート・キューの属性を表示する。
    
    DISPLAY QUEUE (CYAN.REMOTE.QUEUE)
    
  • 書き込みを有効にするためにリモート・キューを変更する。 これは、ターゲット・キューには影響を与えません。このリモート・キューを指定するアプリケーションのみに影響を与えます。
    
    ALTER QREMOTE (CYAN.REMOTE.QUEUE) PUT(ENABLED)
    
  • このリモート・キューを削除する。 これは、ターゲット・キューに影響を与えません。そのローカル定義にのみ影響を与えます。
    
    DELETE QREMOTE (CYAN.REMOTE.QUEUE)
    
注: リモート・キューを削除すると、リモート・キューのローカル表現のみが削除されます。 リモート・キューやリモート・キュー上のメッセージは削除されません。