Exception handling Mule私有流和关注点分离

Exception handling Mule私有流和关注点分离,exception-handling,mule,Exception Handling,Mule,我有一个要求,我想解决使用骡子。我的流程设计如下: 带有请求-响应HTTP入站端点的主流。在对当前有效负载应用两个转换后,该主流调用两个私有流,即private-flow1和private-flow2,这两个私有流是处理策略同步的mule私有流 private-flow1使用请求-响应HTTP出站端点调用外部服务 private-flow2使用数据库连接器将外部服务的响应放在数据库上 如果每个私有流中都有异常,我想使用Catch异常策略在相应的私有流中处理它们 我有这样的设计来分离关注点,以

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

  • 带有请求-响应HTTP入站端点的主流。在对当前有效负载应用两个转换后,该主流调用两个私有流,即private-flow1private-flow2,这两个私有流是处理策略同步的mule私有流
  • private-flow1使用请求-响应HTTP出站端点调用外部服务
  • private-flow2使用数据库连接器将外部服务的响应放在数据库上
如果每个私有流中都有异常,我想使用Catch异常策略在相应的私有流中处理它们

我有这样的设计来分离关注点,以便每个流执行单个职责

假设在任何一个私有流中存在类似IOException、SQLException或any的异常,我如何重新抛出自定义异常,例如org.mycompany.CustomException,包括根本原因。因此,主流程只需处理org.mycompany.CustomException并构建相关的异常响应

例如,如果private-flow1抛出由IOException引起的org.mycompany.CustomException,实际异常响应将是:

{“exceptionMessage”:外部服务不可用,“exceptionCode”:101}

并且,如果private-flow2抛出由SQLException引起的org.mycompany.CustomException,则实际异常响应将为


{“exceptionMessage”:数据库不可用,“exceptionCode”:102}

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

以下是一个如何做到这一点的链接:-

对于自定义异常,创建java类,该类将扩展DefaultMessaginExceptionStrategy

更新:-
使用自定义异常策略的示例:-

groovy脚本组件是重新引发异常的唯一可用选项吗?如果您计划使用自定义异常,可以使用java类或groovy重新引发自定义异常。请提供一个示例或链接,使用java类创建自定义异常是否会扩展DefaultMessaginExceptionStrategy?以及如何在流中使用此java类。我不确定扩展CatchMessaginExceptionStrategy是否会重新引发自定义异常?正如您所建议的,我是这样做的:
。但它抛出了一个新错误:
org.mule.exception.catchMessaginExceptionStrategy:处理失败后,未能将消息分派到错误队列。