In addition to the typical intra-group queuing configuration described in Figure 91 , other configurations are possible.
For applications that process short messages it might be feasible to
configure only intra-group queuing for delivering messages between queue
managers in a queue-sharing group. However, for applications that
process large (greater than the maximum supported message length for shared
queues minus the length of the MQXQH) messages, it may be necessary to
configure distributed queuing with intra-group queuing. The following
diagram illustrates this configuration.
Figure 93. An example configuration

|
- It is important to note that when the requesting application opens remote
queue RQ1, name resolution occurs for both the non-shared transmission queue
XQ1 and the shared transmission queue
SYSTEM.QSG.TRANSMIT.QUEUE.
- When the requesting application puts a message on to the remote queue, the
queue manager decides, based on whether intra-group queuing is enabled for
outbound transfer and on the message characteristics, whether to put the
message to transmission queue XQ1, or to transmission queue
SYSTEM.QSG.TRANSMIT.QUEUE. The queue manager
places all large messages on to transmission queue XQ1, and all small messages
on to transmission queue
SYSTEM.QSG.TRANSMIT.QUEUE.
- If transmission queue XQ1 is full, or is not available, put requests for
large messages fail synchronously with a suitable return and reason
code. However, put requests for small messages continue to succeed and
are placed on transmission queue
SYSTEM.QSG.TRANSMIT.QUEUE.
- If transmission queue SYSTEM.QSG.TRANSMIT.QUEUE is
full, or cannot be put to, put requests for small messages fail synchronously
with a suitable return and reason code. However, put requests for large
messages continue to succeed and are placed on transmission queue XQ1.
In this case, no attempt is made to put the small messages on to a
transmission queue.
- The requesting application puts large messages to remote queue RQ1.
- Queue manager QMG1 puts the messages on to transmission queue XQ1.
- Sender MCA (S) on queue manager QMG1 retrieves the messages from
transmission queue XQ1 and sends them to queue manager QMG2.
- Receiver MCA (R) on queue manager QMG2 receives the messages and places
them on to destination queue LQ1.
- The serving application retrieves and subsequently processes the messages
from queue LQ1.
- The requesting application puts small messages on to remote queue
RQ1.
- Queue manager QMG1 puts the messages on to transmission queue
SYSTEM.QSG.TRANSMIT.QUEUE.
- IGQ on queue manager QMG2 retrieves the messages and places them on to the
destination queue LQ1.
- The serving application retrieves the messages from queue LQ1.
- The requesting application does not need to be aware of the underlying
mechanism used for the delivery of messages.
- A potentially faster message delivery mechanism can be achieved for small
messages.
- Multiple paths are available for message delivery (that is, the normal
channel route and the intra-group queuing route).
- The intra-group queuing route, being potentially faster, is selected in
preference to the normal channel route. Depending on the message
characteristics, message delivery may be divided across the two paths.
Hence, messages may be delivered out of sequence (though this is also possible
if messages are delivered using only the normal channel route).
- Once a route has been selected, and messages have been placed on to the
respective transmission queues, only the selected route will be used for
message delivery. Any unprocessed messages on the
SYSTEM.QSG.TRANSMIT.QUEUE are not diverted to
transmission queue XQ1.
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).
Figure 94. An example of clustering with intra-group queuing
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
- 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.
It is possible to configure a queue manager that is a member of a cluster
as well as a queue-sharing group and is connected to a distributed queue
manager using a sender/receiver channel pair. This configuration is a
combination of distributed queuing with intra-group queuing, described in Distributed queuing with intra-group queuing (multiple delivery paths), and clustering with intra-group queuing, described in Clustering with intra-group queuing (multiple delivery paths) .
© IBM Corporation 2002. All Rights Reserved