8.2.3 名称解決

注意
リモートキューのローカル定義でリモートキュー名を指定する,mqaremque定義コマンドの-rオプションを省略すると,キューマネジャの別名定義になります。

キューをオープンするとき,指定したキュー名についてMQOPEN命令は名前を解決します。これによって,キューマネジャは以降の操作を実行するキューを決定します。つまり,ユーザがオブジェクト記述子に別名キューまたはリモートキューの名前を指定するとき,命令はそれらをローカルキューまたは転送キューの名前に解決します。

登録,検索,または設定用にキューがオープンされる場合は,ローカルキューに解決されます。ローカルキューがなければ命令は失敗します。出力専用,照会専用,または出力と照会用にオープンされる場合は,ローカルキュー以外に解決されます。MQOPEN命令使用時のキュー名解決について,表8-1に示します。ユーザがObjectQMgrNameフィールドに指定した名前は,ObjectNameフィールドに指定した名前よりも先に解決されることに注意してください。

この表では,キューマネジャの別名を定義するために,リモートキューのローカル定義を使用する方法も示しています。ユーザはリモートキューにメッセージを登録するときに,どの転送キューを使用するか選択できます。例えば,複数のリモートキューマネジャあてのメッセージに一つの転送キューを使用できます。

この表を使用する場合は,"MQOD構造体の入力"列を参照して,該当する行を選択してください。同じ行の"解決後の名前"列には,どのキューマネジャのどのオブジェクトに解決されるかが示されます。

表8-1 MQOPEN命令使用時のキュー名解決

項番MQOD構造体の入力解決後の名前転送キュー
ObjectQMgrNameObjectNameObjectQMgrNameObjectName
1空白またはローカルキューマネジャクラスタ属性のないローカルキューローカルキューマネジャ入力値-(ローカルキューが使用されます。)
2空白クラスタ属性のローカルキュー負荷分散機能が選択したクラスタキューマネジャ,またはMQPUT命令で選択された特定のクラスタキューマネジャ入力値SYSTEM.CLUSTER.TARASMIT.QUEUEおよびローカルキューが使用されます。
3ローカルキューマネジャクラスタ属性のローカルキューローカルキューマネジャ入力値-(ローカルキューが使用されます。)
4空白またはローカルキューマネジャモデルキューローカルキューマネジャ生成された名前-(ローカルキューが使用されます。)
5空白またはローカルキューマネジャ別名キュー。クラスタ属性の有無は関係ありません。ObjectQMgrNameフィールドの値はそのままで別名キュー定義オブジェクトにあるBaseQNameの値をObjectNameに設定して名称解決を再度実行します。
別名キューには戻りません。
6空白またはローカルキューマネジャリモートキューのローカル定義。クラスタ属性の有無は関係ありません。RemoteQMgrNameフィールドの値をObjectQMgrNameに,RemoteQNameの値をObjectNameに設定して名称解決を再度実行します。
リモートキューには戻りません。
空白でない場合はXmitQName属性の名前。それ以外の場合はリモートキュー定義オブジェクトのRemoteQMgrName
7空白該当するローカルオブジェクトがなく,クラスタキューがあります。負荷分散機能が選択したクラスタキューマネジャ,またはMQPUT命令で選択された特定のクラスタキューマネジャ入力値SYSTEM.CLUSTER.TARASMIT.QUEUE
8空白またはローカルキューマネジャ該当するローカルオブジェクトがなく,クラスタキューがありません。キューが見つからないエラー
9ローカル転送キューの名前解決されません。入力値入力値入力値
10キューマネジャの別名定義(RemoteQMgrNameフィールドはローカルキューマネジャ)解決されません。リモートキューです。RemoteQMgrNameフィールドの値をObjectQMgrNameに設定して名称解決を再度実行します。
リモートキューには戻りません。
入力値空白でない場合はXmitQName属性の名前。それ以外の場合はリモートキュー定義オブジェクトのRemoteQMgrName
11ローカルオブジェクト以外のキューマネジャ(クラスタキューマネジャまたはキューマネジャの別名)解決されません。入力値,またはMQPUT命令で選択された特定のクラスタキューマネジャ入力値SYSTEM.CLUSTER.TARASMIT.QUEUE
12ローカルオブジェクト以外のキューマネジャ(クラスタオブジェクトはありません。)解決されません。入力値入力値キューマネジャのDefXmitQName属性
(凡例)
-:該当しません。
注意
  • BaseQNameは,別名キューの定義に指定したベースキュー名です。
  • RemoteQNameは,リモートキューのローカル定義に指定したリモートキュー名です。
  • RemoteQMgrNameは,リモートキューのローカル定義に指定したリモートキューマネジャ名です。
  • XmitQNameは,リモートキューのローカル定義に指定した転送キュー名です。

別名キューをオープンすると,別名の解決されたベースキューもオープンされます。リモートキューをオープンすると,転送キューもオープンされます。そのため,一方がオープンされている間は,指定したキューも解決されたキューも削除できません。

解決されたキュー名と解決されたキューマネジャ名は,MQOD構造体のResolvedQNameフィールドとResolvedQMgrNameフィールドに保存されます。