A queue sharing group is how IBM MQ on z/OS delivers horizontal scale and high availability inside a sysplex without forcing every application to know which LPAR currently owns the work. Instead of one monolithic queue manager on a single box, you run multiple queue manager members—each a full participant in the group—that share selected queues through the coupling facility. Applications connect to the group name or to a connection pattern that resolves to any healthy member; messages on shared queues are visible from every member that is up and authorized. Operators gain rolling maintenance: bounce one member while others continue draining shared queues. Architects gain a mainframe-native answer to what Linux estates solve with multi-instance queue managers or Kubernetes replicas—but the machinery is coupling facility structures, page sets per member, and CSQ commands, not Docker volumes. This tutorial explains QSG concepts, member roles, what is shared versus private, connection naming for clients and CICS, differences from distributed clusters, capacity signals, and failure modes beginners must recognize before defining the first shared queue.
Before QSGs, a z/OS queue manager was often a single point of failure on one LPAR. Scaling meant bigger engines or splitting traffic by queue name across unrelated queue managers with channels between them—operational overhead and latency. QSGs let many programs on many LPARs put and get the same queue name without inter-queue-manager channels for that data path because messages for shared queues live in the coupling facility. That design matches mainframe habits: sysplex-wide services, parallel sysplex, and shared DASD or CF resources. Distributed MQ later added multi-instance and Native HA patterns; on z/OS the QSG remains the canonical scale-out model for decades of banking and government workloads.
Each QSG member is a queue manager subsystem instance with its own name, logs, and page sets for private objects, while participating in the group identity. The queue sharing group itself has a name used in definitions and often in connection strings. Members must be in a sysplex with an active coupling facility capable of hosting the MQ structures you define. Adding a member is not trivial plug-and-play—it requires planning for structure size, channel limits, and application reconnect behavior. Removing a member requires draining work and understanding which queues were private to that member only.
| Term | Meaning | Example note |
|---|---|---|
| QSG name | Logical group identity | PROD.QSG |
| Member | Queue manager in the group | QM1 on LPAR A |
| Shared queue | QSGDISP(SHARED) in CF | PAYMENTS.IN |
| Private queue | Local to one member | MEMBER1.SCRATCH |
| CF structure | Storage for shared objects | MQSG001 |
Not everything in a QSG is shared. Shared queues (QSGDISP SHARED) store messages in a coupling facility structure—all members see the same depth. Private queues exist on one member page sets; another member cannot get from them without routing you did not intend. Grouped and copied disposition types exist for administrative patterns and cloning definitions across members; beginners should read IBM tables for QSGDISP values before altering production. Channels may be private or shared depending on definition—misunderstanding channel disposition causes partner connection to the wrong member during DR tests.
CICS, IMS, batch MQI, and JMS clients can target the queue sharing group. Connection definitions often specify the group for availability: if member A is down, the connect may succeed to member B without renaming queues in application code. Client channel tables and CONNAME patterns differ from distributed triples—operations documents the approved group address and port or VTAM/generic resources your site uses. Test failover by stopping one member while producers run; verify consumers reconnect and depth drains on surviving members. Applications that hard-code a member name lose QSG benefits.
123456Conceptual connection targets: Application -> QSG group connection -> any active member -> shared queue PAY.IN (CF) Application -> single member QM2 only -> private queue on QM2 page set
Beginners sometimes enable both without documenting traffic flow. A message put to a shared queue is not automatically visible on a distributed cluster queue of the same spelling on Linux—that requires channels, aliases, or bridges.
z/OS operators use CSQ and related displays for member status, structure usage, and shared queue depth—covered further in CSQ commands tutorial. Capacity teams monitor CF structure utilization percentage; running hot causes structure rebuild pain and may block puts. Plan structure size with peak message size times depth plus administrative overhead. Full repositories and partial repositories in cluster sense do not apply to QSG CF lists the same way—stay focused on structure and member health panels your site uses.
A queue sharing group is one customer service team with several desks in different buildings. Customers (applications) do not care which desk answers as long as the shared inbox (coupling facility queue) is the same. Personal notepads on one desk (private queues) stay local.
A queue sharing group is when several IBM MQ helpers share the same toy box in the sky (coupling facility). Any helper can take toys in or out of that shared box, so if one helper rests, the others keep playing.
Draw your sysplex showing LPARs, QSG members, and where shared queues live versus private queues.
List three applications that should connect to the group name versus one member only, with reasons.
Compare QSG failover to distributed multi-instance MQ in one paragraph for your architect review.
1. A queue sharing group exists:
2. QSG members are:
3. Shared queues in a QSG use:
4. QSG versus cluster: