Report messages

The WebSphere MQ transport for SOAP sender code sets the MQRO_EXCEPTION_WITH_FULL_DATA and MQRO_EXPIRATION_WITH_FULL_DATA report options. This results in report messages being written to the response queue in the event of an exception or message expiry condition. SOAP/WebSphere MQ listeners also generates report messages if the format of the request message is not recognized or fails a basic integrity check of the MQRFH2 header, or if the backout/retry threshold is exceeded while a SOAP/WebSphere MQ listener is trying to process the request. The use of these report options means that report messages contain the entire originating request message. Your client application should get these messages and process them appropriately.

The WebSphere MQ transport for SOAP sender code sets the MQRO_DISCARD report option. This option causes a message to be discarded after a report message has been returned, rather than being written to the dead-letter queue. The provided SOAP/WebSphere MQ listeners honour the case where MQRO_DISCARD has not been set. If SOAP/WebSphere MQ generates a report message but fails in the process of sending the report, the normal behavior is that the report message is sent to the dead-letter queue (DLQ). Ensure that your DLQ handler handles these messages correctly. (See WebSphere MQ System Administration Guide for information about DLQ handlers.) If the sender's report options do not meet your requirements you will have to write your own senders to use different MQRO_EXCEPTION and MQRO_DISCARD report options. (See for information about writing your own senders.)

If an error occurs when attempting to write to the dead-letter queue (for example if the dead letter queue is full), a message is written to the WebSphere MQ error log. If the listener is running in its default transactional mode of OnePhase with a non-persistent request message, the original message is not left in the request queue and the SOAP/WebSphere MQ listener continues to execute. If the request message is persistent it is backed out to the request queue and the listener exits. In this case the request queue is set to get-inhibited to prevent an accidental triggered restart.