The TPF MQSeries channel message retry user exit (rriCALL_MREXIT in segment
CUIT) allows you to try to put a message to a destination queue if a previous
attempt failed. rriCALL_MREXIT is called by the TPF MQSeries queue
manager when a channel starts, stops, and when the message channel agent (MCA)
is not able to put a message to a destination queue. This exit is only
valid for a receiver-type channel.
Input
- pExitParms
- A pointer to the MQCXP data structure in
c$cmqxc.h that contains the channel exit parameters
(ExitID and ExitReason).
- pChannelDef
- A pointer to the MQCD data structure in c$cmqxc.h
that contains the channel definition parameters.
- DataLength
- A received message indicator. The length of the message (including
the transmission queue header). If DataLength contains a nonzero
number, a message has been received.
- pAgentBufferLength
- The length of the agent buffer.
- AgentBuffer
- The transmission queue header (MQXQH in cmqc.h), which
includes the message descriptor followed by the message data.
Programming Considerations
- Compile (with the C++ compiler) and link-edit CUIT into the MQSeries
dynamic link library (DLL) called CMQU (build script called CMQUBS).
- A channel must first be defined using the ZMQSC DEF CHL command with the
MREXIT-YES and MRDATA parameters specified. If a channel is defined
with the MREXIT-NO parameter specified, rriCALL_MREXIT will not be
called.
Return Values
Set one of the following exit response codes in the ExitResponse field in
the MQCXP structure in c$cmqxc.h:
- MQXCC_OK
- Continue normally.
- MQXCC_CLOSE_CHANNEL
- Close the channel.
- MQXCC_SUPPRESS_EXIT
- Suppresses calls to this user exit unless the call is to end the channel
connection (ExitReason MQXR_TERM).
- MQXCC_SUPPRESS_FUNCTION
- Do not retry the message; put the message on the dead-letter
queue.
- Note:
- Any other value passed in the ExitResponse field will cause the channel to be
closed.
Set the following exit response code in the ExitResponse2 field in the
MQCXP structure in c$cmqxc.h:
- MQXR2_USE_EXIT_BUFFER
- Use the exit buffer. This indicates that any data to be passed is
in ExitBufferAddr, not AgentBuffer.
- Note:
- Any other value passed in the ExitResponse2 field will cause the channel to
be closed.