When you design your message flow, consider which terminals on
the input node to connect:
- If the node detects an error, it always propagates the message to the
failure terminal if the node has one and if you have connected a fail flow.
- If you connect the catch terminal (if the node has one), this indicates
that you want to handle all exceptions that are generated in the out flow.
This handles errors that can be expected in the out flow. The broker does
not take any action unless there is an exception on the catch flow and the
message is transactional. Connect the failure terminal to handle this case
if you choose.
- If you do not connect the catch terminal, or the node does not have a
catch terminal, the broker provides default processing. This depends on the
node and whether the message is transactional. Processing for non-transactional
messages is described in this topic. Refer to MQeInput error handling or MQInput error handling for
details of how these nodes handle transactional messages (other input nodes
do not support transactional messages).
All input nodes process non-transactional, non-persistent messages.
The built-in input nodes handle failures and exceptions associated with these
messages in this way:
- If the node detects an internal error:
- If the node has successfully propagated the message to the out terminal
and a later exception results in the message being returned to the input node:
- If you have not connected the catch terminal or the node does not have
a catch terminal, the node logs the error in the local error log and discards
the message.
- If you have connected the catch terminal, you are responsible for handling
the error in the catch flow. The broker creates a new ExceptionList to represent
the error and this is propagated to the catch terminal as part of the message
tree, but neither the node nor the broker provide any further exception processing.
- If the node has already propagated the message to the catch terminal and
an exception is thrown in the catch flow:
- If the node has propagated the message to the failure terminal and an
exception is thrown in the fail flow, the node logs the error in the local
error log and discards the message.
This action is summarized
in the table below:
Error event |
Failure terminal connected |
Failure terminal not connected |
Catch terminal connected |
Catch terminal not connected |
Node detects internal error |
Fail flow handles the error |
Node logs the error and discards the message |
Not applicable |
Not applicable |
Node propagates message to out terminal, exception occurs
in out flow |
Not applicable |
Not applicable |
Catch flow handles the error |
Node logs the error and discards the message |
Node propagates message to catch terminal, exception
occurs in catch flow |
Fail flow handles the error (not SCADAInput) |
Node logs the error and discards the message |
Not applicable |
Not applicable |
Node propagates message to failure terminal, exception
occurs in fail flow |
Not applicable |
Not applicable |
Node logs the error and discards the message |
Node logs the error and discards the message |