MQRC 2082: Alias target queue unknown
MQRC 2082 (MQRC_
Other names for this code
Also written as RC2082, reason code 2082, MQ 2082, MQ error 2082, MQRC_UNKNOWN_ALIAS_BASE_Q, 0822, 0x0822, unknown alias base queue, JMSWMQ2008 2082, MQJE001 Reason 2082.
What it means
An alias queue (QALIAS) is a second name for another queue or a topic. Its TARGET attribute, called BaseQName in the MQI and TARGQ in older MQSC, names the real object. When an application opens the alias, the queue manager looks up that target. If it can't find a queue by that name, the open fails with MQCC_
MQ doesn't check the target when the alias is defined. An alias can sit for months pointing at a queue that was never created, renamed or deleted, and fail only when someone uses it.
Clusters cause many 2082s. Aliases are often used to give a local name to a cluster queue hosted elsewhere. If this queue manager hasn't learned about that cluster queue, or the application names its own queue manager in ObjectQMgrName so the lookup stays local, the target can't be resolved. IBM notes the code can also appear while a REFRESH CLUSTER is running. The same reason code identifies the Unknown Alias Base Queue event.
Common causes
- The target queue named in the alias's TARGET attribute was never defined, was deleted, or was renamed.
- A typo or wrong case in TARGET. Unquoted names in MQSC are folded to uppercase, so a target defined in lowercase with quotes is a different queue.
- The target is a cluster queue that this queue manager doesn't know about yet, for example because it isn't in the cluster or the cluster definitions haven't reached it.
- The application sets ObjectQMgrName to its own queue manager, so the queue manager looks only locally for a target that lives on another cluster member. For JMS, the QMANAGER property of the queue object has the same effect.
- A REFRESH CLUSTER is in progress and cluster information is being rebuilt.
How to find the problem
- Display the alias with
DISPLAY QALIAS(ORDERS., then its target withALIAS) TARGET TARGTYPE DISPLAY QUEUE(target). A 'not found' response confirms the cause. - For a cluster target, run
DISPLAY QCLUSTER(target)on the queue manager the application connects to. If nothing comes back, this queue manager doesn't know about the cluster queue. - Check the application's ObjectQMgrName, or the JMS queue's QMANAGER property or queue URI, for a queue manager name.
- If queue manager events are on, an Unknown Alias Base Queue event on SYSTEM.
ADMIN. QMGR. EVENT names the alias and target.
How to fix it
- Define the missing target queue, or change the alias with
ALTER QALIAS(ORDERS.to point at the right one.ALIAS) TARGET(ORDERS.IN) - Leave ObjectQMgrName blank so clustering can choose the destination. In JMS, set QMANAGER to an empty string.
- Fix cluster membership so the queue manager learns about the target, for example by checking its cluster-sender and cluster-receiver channels.
- Open cluster queues for output only. A remote instance of a cluster queue can't be read, so get options fail.
What it looks like
JMSWMQ2008: Failed to open MQ queue 'ORDERS.ALIAS'.
JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2082' ('MQRC_UNKNOWN_ALIAS_BASE_Q').IBM documentation
IBM documentation: MQRC 2082. Use the documentation for your installed release.
Related codes
Questions
What is the difference between 2082 and 2085?
2085 means the queue name the application opened doesn't exist. 2082 means the application opened an alias that exists, but the queue the alias points to can't be found.
Why didn't MQ stop me defining an alias to a missing queue?
MQ only resolves the target when the alias is opened. Defining an alias to a queue that doesn't exist yet is allowed.
Why does 2082 come and go in a cluster?
The target depends on cluster information reaching this queue manager. While a REFRESH CLUSTER runs, or while channels to the full repositories are down, the target can be temporarily unknown.