Cluster Objects

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.

Cluster Name as a Tag

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.

Main cluster object types
ObjectRole
QLOCAL + CLUSTERCluster queue—hosted on this QM, advertised to cluster
CHANNEL CLUSRCVRInbound cluster channel; partners start CLUSSDR to here
CHANNEL CLUSSDROutbound cluster channel to a CLUSRCVR
CLUSQMQueue manager alias for routing or renaming in cluster
QMGR REPOS / REPOSNLMarks full repository for cluster(s)

Explainer: Full vs Partial Repository

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.

Cluster Channels vs Normal Channels

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.

Cluster Workload Management (Introduction)

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.

CLUSQM Aliases

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.

Tutorial: Minimal Cluster MQSC

shell
1
2
3
4
5
6
7
8
9
10
11
12
13
* 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

Repository System Queues

  • SYSTEM.CLUSTER.REPOSITORY.QUEUE — holds repository messages.
  • SYSTEM.CLUSTER.COMMAND.QUEUE — carries cluster command requests.
  • SYSTEM.CLUSTER.TRANSMIT.QUEUE — cluster transmission traffic.

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 vs QSG vs Multi-Instance

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.

Explain Like I'm Five: Cluster Objects

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).

Practice Exercises

Exercise 1

Design two full repository QMs and three partial members for cluster PROD.PAY.

Exercise 2

ORDERS.IN exists on QM_A but not visible on QM_B. List five DISPLAY/REFRESH steps.

Exercise 3

When would you add a second cluster queue instance on another member?

Frequently Asked Questions

Frequently Asked Questions

Test Your Knowledge

Test Your Knowledge

1. DEFINE QLOCAL with CLUSTER(DEV) makes:

  • A cluster queue visible in cluster DEV
  • Only a topic
  • Only a listener
  • A CF structure

2. ALTER QMGR REPOS(DEV) designates:

  • Full repository for cluster DEV
  • Dead-letter queue
  • Default PSID
  • CONNAUTH

3. Partial repository queue managers:

  • Hold subset of cluster defs; refresh from full repos
  • Store all messages forever
  • Cannot use channels
  • Are only on z/OS

4. Cluster sender channel type is:

  • CLUSSDR
  • SVRCONN
  • AMQP
  • STATUS
Published
Read time16 min
AuthorMainframeMaster
Verified: IBM MQ 9.3 documentation