IBM MQ clusters reduce manual wiring between queue managers. Instead of defining a remote queue and transmission queue on every spoke for every hub queue, you publish cluster objects—queues and channels tagged with a cluster name—and repository queue managers share that catalog. Applications put to a cluster queue name; the queue manager uses repository data and cluster channels to deliver. This tutorial covers cluster queues, CLUSRCVR and CLUSSDR channels, queue manager aliases (CLUSQM), full versus partial repositories, SYSTEM.CLUSTER.* queues, ALTER QMGR REPOS and REPOSNL, workload management hooks, and beginner troubleshooting when cluster puts route nowhere.
The CLUSTER attribute on a queue or channel is a tag, typically up to 48 characters, such as PROD.BANKING or DEV. All members joining that cluster run with the same cluster name on their channel definitions and publish objects into the same logical namespace. A queue manager can belong to multiple clusters using different cluster names on different objects. Naming standards prevent accidental overlap between test and production—never reuse production cluster names in dev.
| Object | Role |
|---|---|
| QLOCAL + CLUSTER | Cluster queue—hosted on this QM, advertised to cluster |
| CHANNEL CLUSRCVR | Inbound cluster channel; partners start CLUSSDR to here |
| CHANNEL CLUSSDR | Outbound cluster channel to a CLUSRCVR |
| CLUSQM | Queue manager alias for routing or renaming in cluster |
| QMGR REPOS / REPOSNL | Marks full repository for cluster(s) |
Picture a phone book copied across offices. Full repository queue managers keep the complete directory for the cluster. Partial repositories keep pages they need plus ask full repos for updates via cluster commands on SYSTEM.CLUSTER.COMMAND.QUEUE. When you add a new cluster queue on QM_APP1, repository messages propagate so QM_APP2 learns the queue exists and which CLUSRCVR reaches APP1. If both full repos are down, new bindings degrade—operations treat repository QMs as critical infrastructure.
CLUSRCVR and CLUSSDR are message channel types specialized for clusters. MQ often creates sender channels automatically when a put needs a route—reducing manual DEFINE CHANNEL count. You still define CLUSRCVR on each queue manager with a CONNAME or port the partner can reach. Network, TLS, and CHLAUTH apply exactly as for SDR/RCVR—clusters are not less secure by default. DISPLAY CHSTATUS shows cluster channels in BINDING or RUNNING like standard channels.
When the same cluster queue name exists on multiple members, IBM MQ cluster workload management chooses which instance receives the message based on attributes such as CLWLPRTY, CLWLRANK, CLWLWGHT, and CLWLUSEQ on queues and channels. Dedicated tutorials cover each attribute; here the key idea is cluster objects include tuning knobs, not just names. Without understanding workload, beginners see messages always hit one server while another sits idle.
Queue manager aliases let you publish a stable name different from the physical QMGR name—useful after mergers, DMZ routing, or connecting two clusters through a gateway queue manager. DEFINE QREMOTE-like behavior exists in cluster terms via aliases documented in IBM MQ cluster guides. Misconfigured aliases cause puts to loop or target wrong hosts; DISPLAY CLUSQM and repository displays help audits.
12345678910111213* On QM_APP1 - join cluster DEV, host a queue, be full repo ALTER QMGR REPOS(DEV) DEFINE QLOCAL('ORDERS.IN') CLUSTER(DEV) REPLACE DEFINE CHANNEL('QM_APP1.TO.QM_APP2') CHLTYPE(CLUSRCVR) + TRPTYPE(TCP) CONNAME('app1.example.com(1414)') CLUSTER(DEV) * On QM_APP2 ALTER QMGR REPOS(DEV) DEFINE QLOCAL('ORDERS.IN') CLUSTER(DEV) REPLACE DEFINE CHANNEL('QM_APP2.TO.QM_APP1') CHLTYPE(CLUSRCVR) + TRPTYPE(TCP) CONNAME('app2.example.com(1414)') CLUSTER(DEV) * After REFRESH CLUSTER or auto-update: DISPLAY CLUSQ(DEV) ORDERS.IN * Put from either member using cluster queue context
Do not delete or depth-cap these queues casually. Problems with repository sync often show as missing cluster queues on remote members until REFRESH CLUSTER or RESET CLUSTER under controlled procedures.
Clusters federate distinct queue managers with channels. Queue sharing groups share queues in CF on z/OS. Multi-instance queue managers share disk on distributed. Choose clusters for cross-platform or cross-site federation; QSG for Sysplex-wide shared queues; multi-instance for single-QM HA.
Every store in a chain wears the same badge (cluster name) and shares a master list (repository) of which store has which products (queues). When you order from the chain app, the system picks the right store without you memorizing each address (manual QREMOTE).
Design two full repository QMs and three partial members for cluster PROD.PAY.
ORDERS.IN exists on QM_A but not visible on QM_B. List five DISPLAY/REFRESH steps.
When would you add a second cluster queue instance on another member?
1. DEFINE QLOCAL with CLUSTER(DEV) makes:
2. ALTER QMGR REPOS(DEV) designates:
3. Partial repository queue managers:
4. Cluster sender channel type is: