WCF custom channel poison messages

When a service fails to process a request message, or fails to deliver a reply message to a reply queue, then the message is treated as a poison message.


Poison request messages

If a request message cannot be processed, then it is treated as a poison message. This action prevents the service from receiving the same unprocessable message again. For an unprocessable request message to be treated as a poison message, one of the following situations must be true:

  • The messages backout count exceeded the backout threshold specified on the request queue, which only occurs if assured delivery was specified for the service. For more information about assured delivery, see: WCF custom channel assured delivery
  • The message was not formatted correctly and could not be interpreted as a SOAP over JMS message.


Poison reply messages

If a service fails to deliver a reply message to the reply queue, then the reply message is treated as a poison message. For reply messages, this action enables the reply messages to be retrieved later to aid problem determination.


Poison message handling

The action taken for a poison message depends on the queue manager configuration and the values set in the report options of the message. For SOAP over JMS, the following report options are set on request messages by default and are not configurable:

  • MQRO_EXCEPTION_WITH_FULL_DATA
  • MQRO_EXPIRATION_WITH_FULL_DATA
  • MQRO_DISCARD_MSG

For SOAP over JMS, the following report option is set on reply messages by default and is not configurable:

  • MQRO_DEAD_LETTER_Q

If messages come from a non-WCF source, then refer to the documentation for that source.

The following diagram shows the possible actions and the steps taken if poison message handling fails:

Parent topic: WCF Custom channel features and capabilities