When you open a WebSphere MQ queue, the MQOPEN call performs a name resolution function on the queue name that you specify. This determines on which queue the queue manager performs subsequent operations. This means that when you specify the name of an alias queue or a remote queue in your object descriptor (MQOD), the call resolves the name either to a local queue or to a transmission queue. If a queue is opened for any type of input, browse, or set, it resolves to a local queue if there is one, and fails otherwise. It resolves to a nonlocal queue only if it is opened for output only, inquire only, or output and inquire only. See Table 2 for an overview of the name resolution process. The name that you supply in ObjectQMgrName is resolved before that in ObjectName.
Table 2 also shows how you can use a local definition of a remote queue to define an alias for the name of a queue manager. This allows you to select which transmission queue is used when you put messages on a remote queue, so you could, for example, use a single transmission queue for messages destined for many remote queue managers.
To use the following table, first read down the two left-hand columns, under the heading Input to MQOD, and select the appropriate case. Then read across the corresponding row, following any instructions. Following the instructions in the Resolved names columns, you can either return to the Input to MQOD columns and insert values as directed, or you can exit the table with the results supplied. For example, you might be required to input ObjectName.
Input to MQOD | Resolved names | |||
---|---|---|---|---|
ObjectQMgrName | ObjectName | ObjectQMgrName | ObjectName | Transmission queue |
Blank or local queue manager | Local queue with no CLUSTER attribute | Local queue manager | Input ObjectName | Not applicable (local queue used) |
Blank queue manager | Local queue with CLUSTER attribute | Workload management selected cluster queue manager or specific cluster queue manager selected on PUT | Input ObjectName | SYSTEM.CLUSTER. TRANSMIT.QUEUE and local queue used
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Local queue manager | Local queue with CLUSTER attribute | Local queue manager | Input ObjectName | Not applicable (local queue used) |
Blank or local queue manager | Model queue | Local queue manager | Generated name | Not applicable (local queue used) |
Blank or local queue manager | Alias queue with or without CLUSTER attribute | Perform name resolution again with ObjectQMgrName unchanged, and input ObjectName set to the BaseQName in the alias queue definition object. Must not resolve to an alias queue | ||
Blank or local queue manager | Local definition of a remote queue with or without CLUSTER attribute | Perform name resolution again with ObjectQMgrName set to RemoteQMgrName, and ObjectName set to RemoteQName. Must not resolve remote queues | Name of XmitQName attribute, if non-blank;
otherwise RemoteQMgrName in the remote queue definition
object.
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
|
Blank queue manager | No matching local object; cluster queue found | Workload management selected cluster queue manager or specific cluster queue manager selected on PUT | Input ObjectName | SYSTEM.CLUSTER. TRANSMIT.QUEUE
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Blank or local queue manager | No matching local object; cluster queue not found | Error, queue not found | Not applicable | |
Name of queue manager in same queue sharing group as local queue manager | Local shared queue | Local queue manager | Input ObjectName | Not applicable |
Name of a local transmission queue | (Not resolved) | Input ObjectQMgrName | Input ObjectName | Input ObjectQMgrName
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Queue manager alias definition (RemoteQMgrName may be the local queue manager) | (Not resolved, remote queue) | Perform name resolution again with ObjectQMgrName set to RemoteQMgrName. Must not resolve to remote queues | Input ObjectName | Name of XmitQName attribute, if non-blank;
otherwise RemoteQMgrName in the remote queue definition
object.
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Queue manager is not the name of any local object; cluster queue managers or queue manager alias found | (Not resolved) | ObjectQMgrName or specific cluster queue manager selected on PUT | Input ObjectName | SYSTEM.CLUSTER. TRANSMIT.QUEUE
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Queue manager is not the name of any local object; no cluster objects found | (Not resolved) | Input ObjectQMgrName | Input ObjectName | DefXmitQName attribute of the queue
manager where DefXmitQName is supported.
SYSTEM.QSG. TRANSMIT.QUEUE (see note) |
Note:
The SYSTEM.QSG.TRANSMIT.QUEUE
is used if local and remote queue managers are in the same queue-sharing group,
intra-group queuing is enabled. |
Opening an alias queue also opens the base queue to which the alias resolves, and opening a remote queue also opens the transmission queue. Therefore you cannot delete either the queue that you specify or the queue to which it resolves while the other one is open.
The resolved queue name and the resolved queue manager name are stored in the ResolvedQName and ResolvedQMgrName fields in the MQOD.
For more information about name resolution in a distributed queuing environment see WebSphere MQ Intercommunication.
Notices |
Downloads |
Library |
Support |
Feedback
![]() ![]() |
nres |