Exceptions when dealing with unknown and timeout messages

When timeout messages or unknown messages from unknown timeout processing are produced from an AggregateReply node, they originate from an internal queue and not from an MQInput node. This behavior affects how the error handling should be performed.

If a message that is sent down the timeout thread causes an exception, the message rolls back to the AggregateReply node and is sent to the Catch terminal. If this terminal is unattached or an exception occurs while processing the message, the timeout is rolled back onto the internal queue and is reprocessed. Potentially, this behavior can lead to an infinite loop, which can be stopped by deploying a version of the message flow that fixes the problem.

To avoid this infinite loop, take the following actions.
  • Connect the Catch terminal to a set of nodes that handle errors.
  • Ensure that the error-handling nodes cannot throw an exception by ensuring that they perform very simple operations; for example, converting the message to a BLOB, then writing it to a queue, or adding extra TryCatch nodes.

The failure terminal of the AggregateReply node is not used currently and messages are not passed to this terminal.