【发布时间】:2015-01-17 05:39:52
【问题描述】:
我有一个想用 Mule 解决的需求。我的流程设计如下:
- 具有请求-响应 HTTP 入站端点的 主流程。在对当前有效负载应用几个转换之后,该主流程调用两个私有流,即 private-flow1 和 private-flow2,它们是处理策略是同步的骡子私有流。
- private-flow1 使用请求-响应 HTTP 出站端点调用外部服务。
- private-flow2 使用数据库连接器将来自外部服务的响应放在数据库上。
如果每个私有流中都有任何异常,我想使用 Catch Exception Strategy 在相应的私有流中处理它们。
我有这样的设计来分离关注点,以便每个流程执行一个单一的职责。
假设在任何一个私有流中存在 IOException、SQLException 或任何异常,如何重新抛出我的自定义异常,例如 org.mycompany.CustomException,包括根本原因。所以 main-flow 将只需要处理 org.mycompany.CustomException 并构建相关的异常响应。
例如,如果 private-flow1 抛出由 IOException 引起的 org.mycompany.CustomException,则实际的异常响应将是:
{“exceptionMessage”:外部服务不可用,“exceptionCode”:101}
并且,如果 private-flow2 抛出由 SQLException 引起的 org.mycompany.CustomException,则实际的异常响应将是
{“exceptionMessage”:数据库不可用,“exceptionCode”:102}
【问题讨论】: