Trigger monitors on UNIX systems, i5/OS, and Windows systems

The following trigger monitors are provided for the server environment:

amqstrg0
This is a sample trigger monitor that provides a subset of the function provided by runmqtrm. See Sample programs (all platforms except z/OS) for more information on amqstrg0.
runmqtrm
runmqtrm [-m QMgrName] [-q InitQ] is the command. The default is SYSTEM.DEFAULT.INITIATION.QUEUE on the default queue manager. It calls programs for the appropriate trigger messages. This trigger monitor supports the default application type.

The command string passed by the trigger monitor to the operating system is built as follows:

  1. The ApplId from the relevant PROCESS definition (if created)
  2. The MQTMC2 structure, enclosed in quotation marks
  3. The EnvData from the relevant PROCESS definition (if created)

where ApplId is the name of the program to run as it would be entered on the command line.

The parameter passed is the MQTMC2 character structure. A command string is invoked that has this string, exactly as provided, in quotation marks, in order that the system command will accept it as one parameter.

The trigger monitor does not look to see if there is another message on the initiation queue until the completion of the application that it has just started. If the application has a lot of processing to do, the trigger monitor might not be able to keep up with the number of trigger messages arriving. You have two options:

If you have more trigger monitors running, you can control the maximum number of applications that can run at any one time. If you run applications in the background, there is no restriction imposed by WebSphere MQ on the number of applications that can run.

To run the started application in the background on Windows systems, within the ApplId field, prefix the name of your application with a START command. For example:

  START AMQSECHA /B

To run the started application in the background on UNIX(R) systems, put an & at the end of the EnvData of the PROCESS definition.

The following trigger monitors are provided for the WebSphere MQ client:

runmqtmc
This is the same as runmqtrm except that it links with the WebSphere MQ client libraries.

For CICS:

The amqltmc0 trigger monitor is provided for CICS(R). It works in the same way as the standard trigger monitor, runmqtrm, but you run it in a different way and it triggers CICS transactions.

It is supplied as a CICS program; define it with a 4-character transaction name. Enter the 4-character name to start the trigger monitor. It uses the default queue manager (as named in the qm.ini file or, on WebSphere MQ for Windows, the registry), and the SYSTEM.CICS.INITIATION.QUEUE.

If you want to use a different queue manager or queue, build the trigger monitor the MQTMC2 structure: this requires you to write a program using the EXEC CICS START call, because the structure is too long to add as a parameter. Then, pass the MQTMC2 structure as data to the START request for the trigger monitor.

When you use the MQTMC2 structure, you need to supply only the StrucId, Version, QName, and QMgrName parameters to the trigger monitor as it does not reference any other fields.

Messages are read from the initiation queue and used to start CICS transactions, using EXEC CICS START, assuming the APPL_TYPE in the trigger message is MQAT_CICS. The reading of messages from the initiation queue is performed under CICS syncpoint control.

Messages are generated when the monitor has started and stopped as well as when an error occurs. These messages are sent to the CSMT transient data queue.

Here are the available versions of the trigger monitor:

Version Use
amqltmc0 CICS for Windows NT TXSeries for AIX(R), HP-UX, and Sun Solaris Version 5.1
amqltmc4 TXSeries(R) for Windows, Version 5.1

If you need a trigger monitor for other environments, write a program that can process the trigger messages that the queue manager puts on the initiation queues. Such a program should:

  1. Use the MQGET call to wait for a message to arrive on the initiation queue.
  2. Examine the fields of the MQTM structure of the trigger message to find the name of the application to start, and the environment in which it runs.
  3. Issue an environment-specific start command. For example, in z/OS batch, submit a job to the internal reader.
  4. Convert the MQTM structure to the MQTMC2 structure if required.
  5. Pass either the MQTMC2 or MQTM structure to the started application. This can contain user data.
  6. Associate with your application queue the application that is to serve that queue. You do this by naming the process definition object (if created) in the ProcessName attribute of the queue.

    Use DEFINE QLOCAL or ALTER QLOCAL. On i5/OS you can also use CRTMQMQ or CHGMQMQ.

For more information on the trigger monitor interface, see the WebSphere MQ Application Programming Reference.