TimeoutNotification 节点通过事务性消息处理错误时执行以下操作。非事务性消息中的错误将按管理输入节点中的错误中讲述的那样处理。
- 如果 TimeoutNotification 节点检测内部错误,则发生以下某个操作:
- 如果您未连接 Failure 终端,则发生以下情况:
- TimeoutNotification 节点将错误写入本地错误日志中。
- TimeoutNotification 节点重复尝试处理该请求,直到问题解决。
- 如果已连接到 failure 终端,则有责任处理连接到 failure 终端的流中的错误。代理会创建新的 ExceptionList 以表示错误,并且此 ExceptionList 将作为消息树的一部分传播到 Failure 终端,但 TimeoutNotification 节点和代理都不再进一步处理故障。消息作为同一事务的一部分写入 Failure 终端,如果 failure 流成功处理了错误,则落实该事务。
- 如果 TimeoutNotification 节点已成功将消息传播到 Out 终端,而已连接到 Out 终端的流中抛出一个异常,则消息会返回到 TimeoutNotification 节点。TimeoutNotification 节点将错误写入本地错误日志中,并执行以下某个操作:
- 如果没有连接 Catch 终端,则 TimeoutNotification 节点尝试再次处理该消息,直至问题解决。
- 如果已连接到 Catch 终端,则有责任处理连接到 Catch 终端的流中的错误。代理会创建新的 ExceptionList 以表示错误,并且此 ExceptionList 将作为消息树的一部分传播到 Catch 终端,但 TimeoutNotification 节点和代理都不再进一步处理故障。消息作为相同事务的一部分写入 Catch 终端,如果连接到 Catch 终端的流成功处理了该错误,则落实该事务。
- 如果 TimeoutNotification 节点已将消息传播到 Catch 终端,而已连接到 Catch 终端的流中抛出一个异常,则消息会返回到 TimeoutNotification 节点。TimeoutNotification 节点将错误写入本地错误日志中,并尝试再次处理该消息。
- 如果 TimeoutNotification 节点已将消息传播到 Failure 终端,而已连接到 Failure 终端的流中抛出一个异常,则消息会返回到 TimeoutNotification 节点。TimeoutNotification 节点将错误写入本地错误日志中,并尝试再次处理该消息。该消息没有传播到 Catch 终端,即使该终端处于连接状态。
下表中概述了此操作:
错误事件 |
已连接 failure 终端 |
未连接 failure 终端 |
已连接 catch 终端 |
catch 终端未连接 |
节点检测到内部错误 |
与 Failure 终端连接的流处理该错误 |
记录的错误日志,节点重试 |
不适用 |
不适用 |
当节点将消息传播到 out 终端时,out 流中出现异常 |
不适用 |
不适用 |
与 Catch 终端连接的流处理该错误 |
记录的错误日志,节点重试 |
当节点将消息传播到 Catch 终端时,与 Catch 终端相连的流中出现异常。 |
记录的错误日志,节点重试 |
记录的错误日志,节点重试 |
不适用 |
不适用 |
当节点将消息传播到 Failure 终端时,与 Failure 终端相连的流中出现异常。 |
不适用 |
不适用 |
记录的错误日志,节点重试 |
记录的错误日志,节点重试 |