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, we must first define, and then open, the queues we 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
- We 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 the 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, the 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, the 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
- To send your request messages to your local queue manager, leave this field blank. This means that your commands are processed locally.
If we want your IBM MQ commands to be processed on a remote queue manager, put its name here. We 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.
Parent topic: Writing programs to administer IBM MQ for z/OS