Configurations

In addition to the typical intra-group queuing configuration described in Figure 91 , other configurations are possible.

Distributed queuing with intra-group queuing (multiple delivery paths)

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



An example configuration. The requesting application puts messages to the remote queue, RQ1. Messages are then either put to the the transmission queue, QX1, on QMG1, or to transmission queue SYSTEM.QSG.TRANSMIT.QUEUE, to be received by QMGR2. Refer to the text following the diagram for a more detailed description.

Open/Put processing

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. The requesting application puts large messages to remote queue RQ1.
  2. Queue manager QMG1 puts the messages on to transmission queue XQ1.
  3. Sender MCA (S) on queue manager QMG1 retrieves the messages from transmission queue XQ1 and sends them to queue manager QMG2.
  4. Receiver MCA (R) on queue manager QMG2 receives the messages and places them on to destination queue LQ1.
  5. The serving application retrieves and subsequently processes the messages from queue LQ1.

Flow for small messages

  1. The requesting application puts small messages on to remote queue RQ1.
  2. Queue manager QMG1 puts the messages on to transmission queue SYSTEM.QSG.TRANSMIT.QUEUE.
  3. IGQ on queue manager QMG2 retrieves the messages and places them on to the destination queue LQ1.
  4. The serving application retrieves the messages from queue LQ1.

Points to note about such a configuration

  1. The requesting application does not need to be aware of the underlying mechanism used for the delivery of messages.
  2. A potentially faster message delivery mechanism can be achieved for small messages.
  3. Multiple paths are available for message delivery (that is, the normal channel route and the intra-group queuing route).
  4. 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).
  5. 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.

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

Figure 94. An example of clustering with intra-group queuing



An example of clustering with intra-group queuing. Refer to the text following the figure for details of the structure and components of the cluster shown.

The diagram shows:

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:

If the selected target queue manager is QMG4:

Points to note about such a configuration

Clustering, intra-group queuing and distributed queuing

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