Getting started with intra-group queuing
We can enable, disable, and use intra-group queuing as described in this topic.
- Enable intra-group queuing
- To enable intra-group queuing on your queue managers, we need to do the following:
- Define a shared transmission queue called SYSTEM.QSG.TRANSMIT.QUEUE. The definition of this queue can be found in thlqual.SCSQPROC(CSQ4INSS), the CSQINP2 sample for SYSTEM objects for queue sharing groups. This queue must be defined with the correct attributes, as stated in thlqual.SCSQPROC(CSQ4INSS), for intra-group queuing to work properly.
- Because the IGQ agent is always started at queue manager initialization, intra-group queuing is always available for inbound message processing. The IGQ agent processes any messages that are placed on the SYSTEM.QSG.TRANSMIT.QUEUE. However, to enable intra-group queuing for outbound processing, the queue manager attribute IGQ must be set to ENABLED.Important: If the queue manager attribute IGQ is set to ENABLED, existing object handles may be invalidated with reason code MQRC_OBJECT_CHANGED. See Specific properties of intra-group queuing for more information. As described in the 'Programmer response' section for this reason code, applications need to be coded to handle this situation (see 2041 (07F9) (RC2041): MQRC_OBJECT_CHANGED for more details).
Additionally, as IGQ is designed as a long running and self-recovering task, which starts during initialization and terminates with shutdown, see Limitations of intra-group queuing for further information.
- Disabling intra-group queuing
-
To disable intra-group queuing for outbound message transfer, set the queue manager attribute IGQ
to DISABLED. If intra-group queuing is disabled for a particular queue manager, the IGQ agent on
that queue manager can still process inbound messages that have been placed on the
SYSTEM.QSG.TRANSMIT.QUEUE by a queue manager that does have intra-group queuing enabled for outbound
transfer. Important: If the queue manager attribute IGQ is set to ENABLED, existing
object handles may be invalidated with reason code MQRC_OBJECT_CHANGED. See Specific properties of intra-group queuing for more information. As described in the 'Programmer response' section for
this reason code, applications need to be coded to handle this situation (see 2041 (07F9) (RC2041):
MQRC_OBJECT_CHANGED for more details).
Additionally, as IGQ is designed as a long running and self-recovering task, which starts during initialization and terminates with shutdown, see Limitations of intra-group queuing for further information.
- Use intra-group queuing
- Once intra-group queuing is enabled, it is available for use and a queue manager uses it whenever possible. That is, when an application puts a message to a remote queue definition, to a fully qualified remote queue, or to a cluster queue, the queue manager determines if the message is eligible to be delivered using intra-group queuing and if it is, places the message on to SYSTEM.QSG.TRANSMIT.QUEUE. There is no need to change user applications, or to application queues, because for eligible messages the queue manager uses the SYSTEM.QSG.TRANSMIT.QUEUE, in preference to any other transmission queue.
Parent topic: Intra-group queuing