Preparing queues for administration programs
Administration programs require a number of predefined queues for system command input and receiving responses.
This section applies to commands in the MQSC format. For the equivalent in PCF, see Use IBM MQ Programmable Command Formats.
Before we can issue any MQPUT or MQGET calls, you must first define, and then open, the queues you are going to use.
- Defining the system-command input queue
The system-command input queue is a local queue called SYSTEM.COMMAND.INPUT. The supplied CSQINP2 initialization data set, thlqual.SCSQPROC(CSQ4INSG), contains a default definition for the system-command input queue. For compatibility with IBM MQ on other platforms, an alias of this queue, called SYSTEM.ADMIN.COMMAND.QUEUE is also supplied. See Sample definitions supplied with IBM MQ for more information.
- Defining a reply-to queue
- You must define a reply-to queue to receive reply messages from the IBM MQ command processor. It can be any queue with attributes that allow reply messages to be put on it. However, for normal operation, specify these attributes:
- USAGE(NORMAL)
- NOTRIGGER (unless our application uses triggering)
Avoid using persistent messages for commands, but if you choose to do so, the reply-to queue must not be a temporary dynamic queue.
The supplied CSQINP2 initialization data set, thlqual.SCSQPROC(CSQ4INSG), contains a definition for a model queue called SYSTEM.COMMAND.REPLY.MODEL. We can use this model to create a dynamic reply-to queue.
Note: Replies generated by the command processor can be up to 15 000 bytes in length.If we use a permanent dynamic queue as a reply-to queue, our application should allow time for all PUT and GET operations to complete before attempting to delete the queue, otherwise MQRC2055 (MQRC_Q_NOT_EMPTY) can be returned. If this occurs, try the queue deletion again after a few seconds.
- Opening the system-command input queue
Before we can open the system-command input queue, our application program must be connected to your queue manager. Use the MQI call MQCONN or MQCONNX to do this.
Then use the MQI call MQOPEN to open the system-command input queue. To use this call:
- Set the Options parameter to MQOO_OUTPUT
- Set the MQOD object descriptor fields as follows:
- ObjectType
- MQOT_Q (the object is a queue)
- ObjectName
- SYSTEM.COMMAND.INPUT
- ObjectQMgrName
- If you want to send your request messages to your local queue manager, leave this field blank. This means that your commands are processed locally.
If you want your IBM MQ commands to be processed on a remote queue manager, put its name here. You must also have the correct queues and links set up, as described in Distributed queuing and clusters.
- Opening a reply-to queue
- To retrieve the replies from an IBM MQ command, you must open a reply-to queue. One way of doing this is to specify the model queue, SYSTEM.COMMAND.REPLY.MODEL in an MQOPEN call, to create a permanent dynamic queue as the reply-to queue. To use this call:
- Set the Options parameter to MQOO_INPUT_SHARED
- Set the MQOD object descriptor fields as follows:
- ObjectType
- MQOT_Q (the object is a queue)
- ObjectName
- The name of the reply-to queue. If the queue name you specify is the name of a model queue object, the queue manager creates a dynamic queue.
- ObjectQMgrName
- To receive replies on your local queue manager, leave this field blank.
- DynamicQName
- Specify the name of the dynamic queue to be created.