Distributed queuing with intra-group queuing (multiple delivery paths)
For applications that process short messages it might be feasible to configure
intra-group queuing only for delivering messages between queue managers in a queue sharing group.
The choice of intra-group queuing over channel communications can be controlled by the CFSTRUCT
type level. (3 instead of 4 or 5). The maximum message length as set on the
SYSTEM.QSQ.TRANSMIT.QUEUE.
Figure 1. An example configuration
Open/Put processing
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, based on whether
intra-group queuing is enabled for outbound transfer on the queue manager and on the message
characteristics, the message is put 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.
Flow for large messages
The requesting application puts large messages to remote queue RQ1.
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 then processes the messages from queue LQ1.
Flow for small messages
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.
Points to note
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 might be divided across
the two paths. Hence, messages might be delivered out of sequence (though this delivery is also
possible if messages are delivered using only the normal channel route).
When a route has been selected, and messages have been placed on to the transmission queues,
only the selected route is used for message delivery. Any unprocessed messages on the
SYSTEM.QSG.TRANSMIT.QUEUE are not diverted to transmission queue XQ1.