別名キューの処理

別名キューを定義して、他のキューまたはトピックを間接的に参照できます。

[V9.0.0.1 2017 年 5 月][V9.0.1 2016 年 11 月]
重要: 配布リストは、トピック・オブジェクトを指す別名キューの使用をサポートしません。 IBM® MQ 9.0.1 および IBM MQ 9.0.0 Fix Pack 1以降、別名キューが配布リスト内のトピック・オブジェクトを指している場合、 IBM MQ は以下を返します。MQRC_ALIAS_BASE_Q_TYPE_ERROR.

別名キューが参照するキューは、以下のいずれかが可能です。

別名キューは、実際のキューではなく、実際の (または宛先) キューに解決される定義です。 別名キュー定義は、ターゲット・キューを指定します。 アプリケーションが別名キューに MQOPEN 呼び出しを行うとき、キュー・マネージャーは、別名をターゲット・キュー名に解決します。

別名キューは、ローカルで定義された別の別名キューに解決できません。 ただし、別名キューは、ローカル・キュー・マネージャーがメンバーであるクラスター内の他の場所に定義された別名キューには解決できます。 詳しくは、 ネーム・レゾリューション を参照してください。

別名キューは、以下の場合に役立ちます。

  • ターゲット・キューへの異なるレベルのアクセス権限を異なるアプリケーションに与えている場合。
  • 異なるアプリケーションが異なる方法で同じキューを処理することを許可している場合。 (異なるデフォルトの優先順位または異なるデフォルトの持続性の値を割り当てる場合など。)
  • これは、保守、移行、およびワークロード・バランシングを単純化する場合。 (アプリケーションを変更しないで、別名を使用し続けたままターゲット・キュー名を変更する場合など。)

例えば、MY.ALIAS.QUEUE という名前のキューにメッセージを入れるようなアプリケーションが開発されたとします。 このアプリケーションは、MQOPEN 要求を出すときにこのキューの名前を指定し、メッセージをこのキューに書き込む場合には、間接的にこのキューの名前を指定します。 アプリケーションは、キューが別名キューであることを認識しません。 この別名を使用した各 MQI 呼び出しについて、キュー・マネージャーは実際のキュー名に解決します。このキュー名はローカル・キューか、このキュー・マネージャーに定義されたリモート・キューのいずれかです。

TARGET 属性の値を変更することにより、MQI 呼び出しを別のキュー (おそらく別のキュー・マネージャー上) にリダイレクトすることができます。 これは、保守、移行、および負荷平衡に役立ちます。

別名キューの定義

次のコマンドにより、別名キューが作成されます。

DEFINE QALIAS (MY.ALIAS.QUEUE) TARGET (YELLOW.QUEUE)

このコマンドは、MQI 呼び出し (MY.ALIAS.QUEUE を指定している) をキュー YELLOW.QUEUE にリダイレクトします。 このコマンドは、ターゲット・キューを作成しないので、キュー YELLOW.QUEUE が実行時に存在しなければ、MQI 呼び出しは失敗します。

別名定義を変更すると、MQI 呼び出しを別のキューにリダイレクトできます。 以下に例を示します。

ALTER QALIAS (MY.ALIAS.QUEUE) TARGET (MAGENTA.QUEUE)

このコマンドは、MQI 呼び出しを別のキュー MAGENTA.QUEUE にリダイレクトします。

別名キューを使用すると、単一のキュー (ターゲット・キュー) が、異なるアプリケーションについては異なる属性を持っているよう見えるようにすることもできます。 これは、アプリケーションごとに 1 つの別名、つまり合計 2 つの別名を定義すると行えます。 2 つのアプリケーションがあるとします。
  • アプリケーション ALPHA は、メッセージを YELLOW.QUEUE に書き込むことができますが、そこからメッセージを読み取ることはできません。
  • アプリケーション BETA は、YELLOW.QUEUE からメッセージを読み取ることはできますが、そこにメッセージを書き込むことはできません。
以下のコマンドは、アプリケーション ALPHA の PUT を使用可能にし、GET を使用不可にする別名を定義します。

DEFINE QALIAS (ALPHAS.ALIAS.QUEUE) +
TARGET (YELLOW.QUEUE) +
PUT (ENABLED) +
GET (DISABLED)

以下のコマンドは、アプリケーション BETA の PUT を使用不可にし、GET を使用可能にする別名を定義します。


DEFINE QALIAS (BETAS.ALIAS.QUEUE) +
TARGET (YELLOW.QUEUE) +
PUT (DISABLED) +
GET (ENABLED)

ALPHA は、MQI 呼び出しの中でキュー名 ALPHAS.ALIAS.QUEUE を使用しますが、BETA は、キュー名 BETAS.ALIAS.QUEUE を使用します。 これらはいずれも同じキューをアクセスしますが、その方法は異なっています。

キュー別名を定義する際には、ローカル・キューの場合と同様にして、LIKE 属性および REPLACE 属性を使用することができます。

キュー別名でのその他のコマンドの使用

該当する MQSC コマンドを使用すると、キュー別名の属性の表示、変更、あるいはキュー別名オブジェクトの削除ができます。 以下に例を示します。

DISPLAY QALIAS コマンドを使用して、別名キューの属性を表示します。

DISPLAY QALIAS (ALPHAS.ALIAS.QUEUE)
ALTER QALIAS コマンドを使用して、基本キュー名を変更します。別名は解決されます。キューがオープンしている場合も、force オプションを使用すると、強制的に変更が実施されます。

ALTER QALIAS (ALPHAS.ALIAS.QUEUE) TARGET(ORANGE.LOCAL.QUEUE) FORCE

DELETE QALIAS コマンドを使用して、このキューの別名を削除します。


DELETE QALIAS (ALPHAS.ALIAS.QUEUE)

アプリケーションがそのキューを現在オープンしている場合、別名キューを削除することはできません。