[UNIX, Linux, Windows, IBM i]

ApiExitLocal stanza of the qm.ini file

The ApiExitLocal stanza specifies API exit routines for a queue manager.

For a server, modify the ApiExitLocal stanza of the qm.ini file to identify API exit routines for a queue manager.

[Windows][Linux]Alternatively, on Linux® (x86 and x86-64) and Windows, use the IBM® MQ Explorer Exits queue manager properties page.

For a client, modify the ApiExitLocal stanza in the mqclient.ini file to identify API exit routines for a queue manager.

Overview

The ApiExitLocal stanza allows only a single Module to be specified, and yet four modules need to be provided, as follows:
  • 32 bit unthreaded
  • 32 bit threaded
  • 64 bit unthreaded
  • 64 bit threaded

Note that IBM MQ appends _r to the supplied module name to identify the threaded version of the exit, but IBM MQ does not provide a directly equivalent mechanism for the 32 bit and 64 bit variants.

The versions of amqsaxe0 and amqsaxe0_r that are shipped in prefix/mqm/samp/bin are built for the native size of the queue manager on the platform for which they are built (now all 64 bit) and can only be used by applications running in the same native size.

If an unqualified module name is provided, IBM MQ looks in /var/mqm/exits for the 32 bit variants and in /var/mqm/exits64 for the 64 bit variants

For example, module=amqsaxe implies:

 /var/mqm/exits/amqsaxe  - 32 bit unthreaded variant
 /var/mqm/exits/amqsaxe_r - 32 bit threaded variant
 /var/mqm/exits64/amqsaxe - 64 bit unthreaded variant
 /var/mqm/exits64/amqsaxe_r - 64 bit threaded variant

[Windows]On Windows systems, you can also use the amqmdain command to change the entries for API exits. (To identify API exit routines for all queue managers, you use the ApiExitCommon and ApiExitTemplate stanzas, as described in ApiExitCommon and ApiExitTemplate stanzas of the mqs.ini file.)

Note, that for the API exit to work correctly, the message from the server must be sent to the client unconverted. After the API exit has processed the message, the message must then be converted on the client. This, therefore, requires that you have installed all conversion exits on the client.

For more information about using these attributes, see Configuring API exits.

Parameters

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 IBM 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 stanza of the qm.ini file.
On platforms that support separate threaded libraries, you must provide both a non-threaded and a threaded version of the API exit module. The threaded version must have an _r suffix. The threaded version of the IBM MQ application stub implicitly appends _r to the given module name before it is loaded.
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. You 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.

Example stanza


ApiExitLocal:
   Name=ClientApplicationAPIchecker
   Sequence=3
   Function=EntryPoint
   Module=/usr/Dev/ClientAppChecker
   Data=9.20.176.20