Configuring API exits

This section tells you how to configure API exits.

You define your API exits in stanzas in the mqs.ini and qm.ini files. The sections below describe these stanzas, and the attributes within them that define the exit routines and the sequence in which they run. For guidance on the process of changing these stanzas, see Changing the configuration information.

Stanzas in mqs.ini are:

ApiExitCommon

When any queue manager starts, the attributes in this stanza are read, and then overridden by the API exits defined in qm.ini.

ApiExitTemplate

When any queue manager is created, the attributes in this stanza are copied into the newly created qm.ini file under the ApiExitLocal stanza.

The stanza in qm.ini is:

ApiExitLocal

When the queue manager starts, API exits defined here override the defaults defined in mqs.ini.

 

Attributes for all stanzas

All these stanzas have the following attributes:

Name=ApiExit_name

The descriptive name of the API exit passed to it in the ExitInfoName field of the MQAXP structure.

This name must be unique, no longer than 48 characters, and contain only valid characters for the names of WebSphere MQ objects (for example, queue names).

Function=function_name

The name of the function entry point into the module containing the API exit code. This entry point is the MQ_INIT_EXIT function.

The length of this field is limited to MQ_EXIT_NAME_LENGTH.

Module=module_name

The module containing the API exit code.

If this field contains the full path name of the module it is used as is.

If this field contains just the module name, the module is located using the

ExitsDefaultPath attribute in the ExitPath in qm.ini.

The length of this field is limited to the maximum path length the platform supports.

Data=data_name

Data to be passed to the API exit in the ExitData field of the MQAXP structure.

If you include this attribute, leading and trailing blanks are removed, the remaining string is truncated to 32 characters, and the result is passed to the exit. If you omit this attribute, the default value of 32 blanks is passed to the exit.

The maximum length of this field is 32 characters.

Sequence=sequence_number

The sequence in which this API exit is called relative to other API exits. An exit with a low sequence number is called before an exit with a higher sequence number. There is no need for the sequence numbering of exits to be contiguous; a sequence of 1, 2, 3 has the same result as a sequence of 7, 42, 1096. If two exits have the same sequence number, the queue manager decides which one to call first. We can tell which was called after the event by putting the time or a marker in ExitChainArea indicated by the ExitChainAreaPtr in MQAXP or by writing your own log file.

This attribute is an unsigned numeric value.

 

Sample stanzas

Once you have created an exit as a service program, refer to it in the appropriate stanza in a configuration file using LIBRARY/PROGRAM syntax, as shown in the examples.

The mqs.ini file below contains the following stanzas:

ApiExitTemplate

This stanza defines an exit with the descriptive name

OurPayrollQueueAuditor, module name MYAUDIT, and sequence number 2. A data value of 123 is passed to the exit.

ApiExitCommon

This stanza defines an exit with the descriptive name

MQPoliceman, module name MYSECURE, and sequence number 1. The data passed is an instruction (

CheckEverything).

mqs.ini

   ApiExitTemplate:
      Name=OurPayrollQueueAuditor
      Sequence=2
      Function=EntryPoint
      Module=MYLIB/MYAUDIT
      Data=123
   ApiExitCommon:
      Name=MQPoliceman
      Sequence=1
      Function=EntryPoint
      Module=MYLIB/MYSECURE
      Data=CheckEverything

The qm.ini file below contains an ApiExitLocal definition of an exit with the descriptive name

ClientApplicationAPIchecker, module name MYCHECK, and sequence number 3.

qm.ini

   ApiExitLocal:
      Name=ClientApplicationAPIchecker
      Sequence=3
      Function=EntryPoint
      Module=MYLIB/MYCHECK
      Data=9.20.176.20    

 

Changing the configuration information

The WebSphere MQ configuration file, mqs.ini, contains information relevant to all the queue managers on a particular node.

A queue manager configuration file, qm.ini, contains information relevant to a specific queue manager. There is one queue manager configuration file for each queue manager, stored in its own subdirectory.

The configuration files are stored in the IFS, as follows:

/QIBM/UserData/mqm/mqs.ini
/QIBM/UserData/mqm/qmgrs/<queue-manager-name>/qm.ini

Before editing a configuration file, back it up so that you have a copy we can revert to if the need arises.

We can edit configuration files using the EDTF CL command.

If you set an incorrect value on a configuration file attribute, the value is ignored and an operator message is issued to indicate the problem. (The effect is the same as missing out the attribute entirely.)