7.1 ネーミングルールの考慮点
MQのシステムでは、MQアプリケーションと結びつくのは「キューおよびキューマネージャーになります。
システム設計時に、これらのMQオブジェクトのネーミングルールを決めることは重要です。
システム全体のネーミング・ルールに関しては、個々のシステムの環境において標準となるものが規定されていると思われますので、一般的にはそれに従います。
今回は、MQオブジェクトのネーミング・ルールについて、例や考慮点を紹介していきます。
(あくまで一例です。必ずしもこれらのルールに準拠する必要はありませんので、より適したネーミングもご検討ください)
なお、MQのネーミングには、全てのプラットフォームで共通に使用できる文字セットを使用することを推奨します。
【使用する文字例】
- 英字半角大文字(A~Z)
- 数字半角文字(0〜9)
- 区切り文字として、ピリオド(.)、スラッシュ(/)、下線(_)
7.2 キュー・マネージャー
【キューマネージャー】
- キューマネージャー名はネットワーク内でユニークな名前にする。
通常は、一つのマシン上に一つのキューマネージャーを用意します。ただし、大規模なシステムで、パーシスタント・メッセージを多用し、高スループットが求められる場合や、異なる運用要件がある場合などは、複数のキューマネージャーを稼動させることも可能です。MQネットワーク環境では、それぞれのキューマネージャー名をユニークにする必要があります。
【デフォルト・キューマネージャー】
- デフォルトキューマネージャーは定義しない。
CICS/ESAを使用する環境ではCICSは常に一つのキューマネージャーとしか接続できませんが、その他のプラットフォームでは一つのシステム上に複数のキューマネージャーを生成することが可能です。このとき、一つのキューマネージャーをデフォルトとして定義しないでください。間違ったキューマネージャーを選択してしまうエラーの原因となります。
たとえシステム上に一つのキューマネージャーしか作成しない場合も、そのキューマネージャーをデフォルトとしては設定しないでください。デフォルトとすることによって操作が楽になることもありますが、将来、さらに別のキューマネージャーを追加した際に、エラーの原因となります。
【キューマネージャー別名】
7.3 キュー
【キュー】
- キューの機能を明示する名前をつける。
キューは何らかのサービスを提供するものですので、そのサービスの内容をキュー名に明記すると分かりやすくなります。
- キューマネージャー名は含めない。
MQは、キュー名とそのキューを管理するキューマネージャー名によって、個々のキューを識別します。従って、キュー名にキューマネージャー名を含める必要はありません。
たとえば、キュー名にキューマネージャー名を含めてしまうと、そのキューが別のキューマネージャーに移動した場合に、キュー名自体を変更する必要が出てきます。(ただし、トランスミッションキュー名は除きます)。
- ローカルキュー名の接尾語としてバージョンをつける。
アプリケーションが扱うキューに複数のバージョンが混在する際は、キュー名の接尾語としてバージョンをつけます。
例)
<アプリケーション名>.<機能>_TEST
<アプリケーション名>.<機能>_V2.1
<アプリケーション名>.<機能>_THURSDAY
こうすることで、アプリケーションのパラメーターとしてキュー名がより明確に判断できるようになります。
【特殊なキュー】
トランスミッションキュー
応答キュー
- 命名パターン
応答キューのネーミングコンベンションは今までと同じ階層型とし、"<アプリケーション名>.REPLY"とします。
後にパフォーマンスチューニングなどで構成を変更する可能性があるため、名前にはキューマネージャー名やローカルキューのキュータイプなどは含めません。
共有の応答キューが複数のバージョンを持っているときなどは、別名を使用することも可能です。
デッドレターキュー
-
要件に応じて、デッドレターキューを定義する。
"SYSTEM.DEAD.LETTER.QUEUE"というローカルキューをデッドレターキューとして使用します。
これはいくつかのプラットフォームでは自動的に生成されます。自動的に生成されないプラットフォームでは、これと同じ名前のデッドレターキューを作成してください。
どのプラットフォームでも共通の名前をもたせることにより、判別が容易になります。
デッドレターキューを使用するには、キューマネージャー設定でデッドレターキュー名をDEADQ属性に設定する必要があります。
ただし、デッドレターキューを設定することで、障害発生時にメッセージの転送先が変わったり、メッセージの送信順序性が崩れる可能性があります。デッドレターキューを使用するかどうかは、運用手順等も考慮しながら、別途検討するようにしてください。
ブリッジとリンクのためのキュー
- アプリケーションの階層構造にブリッジもしくはリンクのタイプを入れる。
例)
<アプリケーション名>.IMS、
<アプリケーション名>.R/3、
<アプリケーション名>.CICS
イニシエーションキュー
- 一般的なトリガリングにはシステムで定義されているキューを使用する。
いくつかのプラットフォームでは、キューマネージャーが作成された際に、トリガーモニターのデフォルトとして、イニシエーションキューが定義されます。(SYSTEM.DEFAULT.INITIATION.QUEUEやSYSTEM.CICS.INITIATION.QUEUEなど)
これら、システムで定義されたイニシエーションキューを使用することにより、トリガリングを容易に行うことができます。
7.4 チャネル
【チャネル】
クラスターチャネル
- 命名パターン
クラスターの送信側および受信側においても、"TO.<キューマネージャー名>."のパターンを使用します。
メッセージの送信宛先がわかるようにキュー・マネージャー名を使用します。
- 送信側チャネルの場合:TO.<リポジトリー・キューマネージャー名>
- 受信側チャネルの場合:TO.<自分のキューマネージャー名>
メッセージチャネル
クライアントチャネル
- 命名パターン
メッセージチャネルの命名法は、 "CL.<クライアント側のサブシステムID>" とします。
この名前は全部20文字以内とします。
クライアントチャネル定義は、複数クライアント、複数サーバーで共有することができます。
運用管理を考慮して、どの単位(アプリケーション単位/クライアント単位/サブシステム単位など)でチャネルを共有するかを検討し、それに合ったネーミングをつける必要があります。
また、SSL機能のある/なしなど、機能や用途に応じた接尾語を付与することも可能です。
7.5 その他
【その他のコンポーネント】
MQクラスター名
- クラスター名はネットワーク内でユニークな名前にする。
例) CLUSTnn
CLUST=クラスターを表す接頭語
nn=通番(01〜99)
プロセス
ストレージクラス(zOSのみ)
- ストレージクラスは機能を明示する名前にする。
例) SC.サブシステム.機能(.サブ機能1.サブ機能2)
⚪︎ サブシステム: サブシステム名(在庫管理、給与管理、など)
⚪︎ 機能: 業務機能
⚪︎ サブ機能: 機能を細分化する任意の拡張子
あくまでもシンプルに、例えばIMSブリッジのキューのストレージクラスであれば"IMS"と名づけたりします。
将来変更する際に分かりやすいように機能を明確に記述します。
名前には、それがストレージクラスであるということをわざわざ含む必要はありません。ストレージクラスは他のMQのオブジェクトとは異なるネームスペースを持っているため、オブジェクトリストにてそれがストレージクラスであるということはすぐにわかります。