骡子私人流动和关注点分离

时间:2015-01-17 05:39:53

标签: exception-handling mule

我有一个要求,我想用Mule解决。我的流程设计如下:

  • 带有请求 - 响应HTTP入站端点的主流。在当前有效载荷上应用几个转换后,这个主流调用两个私有流,即 private-flow1 private-flow2 ,它们是处理策略是同步的mule私有流。
  • private-flow1 使用请求 - 响应HTTP出站端点调用外部服务。
  • private-flow2 使用数据库连接器将外部服务的响应放在数据库上。

如果每个私有流中都有异常,我想使用Catch Exception Strategy在相应的私有流本身处理它们。

我有这个设计来区分问题,所以每个流程都要承担一个责任。

假设在任何一个私有流中都存在IOException,SQLException或any之类的异常,如何重新抛出自定义异常,例如,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}

1 个答案:

答案 0 :(得分:1)

每个私有流都有自己的异常策略,你可以使用流中的Groovy组件抛出异常。

以下是如何操作的链接: - How do I force an exception in mule

用于自定义异常创建java-class,它将扩展DefaultMessagingExceptionStrategy

<强>更新: - 使用自定义异常策略的示例: - Why is Mule exception strategy so chatty?