Clustering with intra-group queuing (multiple delivery
paths)
It is possible to configure queue managers so that they are in a cluster
as well as in a queue-sharing group. When messages are sent to a cluster queue
and the local and remote destination queue managers are in the same queue-sharing
group, intra-group queuing is used for the delivery of small messages (using
the SYSTEM.QSG.TRANSMIT.QUEUE) , while the SYSTEM.CLUSTER.TRANSMIT.QUEUE is
used for the delivery of large messages. Also, the SYSTEM.CLUSTER.TRANSMIT.QUEUE
is used for the delivery of messages to any queue manager that is in the cluster,
but outside the queue-sharing group. The following diagram illustrates this
configuration (the channel initiators are not shown).
The diagram shows:
- Four z/OS queue managers QMG1, QMG2, QMG3 and QMG4 configured in a cluster
CLUS1.
- Queue managers QMG1, QMG2 and QMG3 configured in a queue-sharing group
SQ26.
- IGQ agents running on queue managers QMG2 and QMG3.
- The local SYSTEM.CLUSTER.TRANSMIT.QUEUE defined in QMG1.
- The shared SYSTEM.QSG.TRANSMIT.QUEUE defined in the CF.
- Cluster channels TO.QMG2 (connecting QMG1 to QMG2), TO.QMG3 (connecting
QMG1 to QMG3), and TO.QMG4 (connecting QMG1 to QMG4).
- Cluster queue CLUSQ1 being hosted on queue managers QMG2, QMG3 and QMG4.
Assume that the requesting application opens the cluster queue with the
MQOO_BIND_NOT_FIXED option, so that the target queue manager for the cluster
queue is selected at put time.
If the selected target queue manager is QMG2:
- All large messages put by the requesting application are
- Put to the SYSTEM.CLUSTER.TRANSMIT.QUEUE on QMG1
- Transferred to cluster queue CLUSQ1 on QMG2 using cluster channel TO.QMG2
- All small messages put by the requesting application are
- Put to the shared transmission queue SYSTEM.QSG.TRANSMIT.QUEUE
- Retrieved by the IGQ agent on QMG2
- Put to the cluster queue CLUSQ1 on QMG2
If the selected target queue manager is QMG4:
- Because QMG4 is not a member of queue-sharing group SQ26, all messages
put by the requesting application are
- Put to the SYSTEM.CLUSTER.TRANSMIT.QUEUE on QMG1
- Transferred to cluster queue CLUSQ1 on QMG4 using cluster channel TO.QMG4
Points to note about such a configuration
- The requesting application does not need to be aware of the underlying
mechanism used for the delivery of messages.
- A potentially faster delivery mechanism is achieved for the transfer of
small non-persistent messages between queue managers in a queue-sharing group
(even if the same queue managers are in a cluster).
- Multiple paths are available for message delivery (that is, both the cluster
route and the intra-group queuing route).
- The intra-group queuing route, being potentially faster, is selected in
preference to the cluster route. Depending on the message characteristics,
message delivery may be divided across the two paths. Hence, messages may
be delivered out of sequence. It is important to note that this will be true
irrespective of the MQOO_BIND_* option specified by the application. Intra-group
queuing distributes messages in the same way as clustering does, depending
on whether the MQOO_BIND_NOT_FIXED, MQOO_BIND_ON_OPEN, or MQOO_BIND_AS_Q_DEF
is specified on open.
- Once a route has been selected, and messages have been placed on to the
respective transmission queues, only the selected route is used for message
delivery. Any unprocessed messages on the SYSTEM.QSG.TRANSMIT.QUEUE are not
diverted to the SYSTEM.CLUSTER.TRANSMIT.QUEUE.