使用mule服务编排回滚以前的多个服务

时间:2013-08-19 01:57:19

标签: mule

我们的系统由10个子系统组成,并通过socket,http / xml,http / protobuff和ERP服务探索服务,我正在寻找一个框架来管理系统集成,并研究Mule3几天。我知道mule服务编排可以在一个流程中多次调用不同的远程服务,但是我想知道Mule是否可以自动取消以前的服务,例如我想调用4个远程服务,所以在mule3中我定义了一个流并调用那些4服务依次。

  1. 致电服务#1
  2. 致电服务#2
  3. 致电服务#3
  4. 致电服务#4
  5. 现在,如果服务#4失败,Mule3可以自动调用,例如

    1. 致电cancelService#1
    2. 致电cancelService#2
    3. 致电cancelService#3
    4. 取消这3项成功的服务。出于同样的原因,如果服务#3失败,我想调用cancelService#1和cancelService#2。 mule3可以帮忙解决这个问题吗?

      此外,Mule3能否将先前服务的响应作为参数传递给下一个服务?例如,将服务#1的结果传递给服务#2?

      提前致谢。

1 个答案:

答案 0 :(得分:1)

您正在寻找的是compensating pattern,它适用于非设计交易的传输(即http)

实现这一目标的最佳方法可能是将补偿逻辑包含在catch exception strategychoice router中,评估异常并确定需要补偿哪些服务。

更详细的选项是将已调用的WS存储到会话中,并使用该属性选择需要完成的补偿。我不推荐这种方法,除非你无法确定WS从异常中失败了什么