我们的系统由10个子系统组成,并通过socket,http / xml,http / protobuff和ERP服务探索服务,我正在寻找一个框架来管理系统集成,并研究Mule3几天。我知道mule服务编排可以在一个流程中多次调用不同的远程服务,但是我想知道Mule是否可以自动取消以前的服务,例如我想调用4个远程服务,所以在mule3中我定义了一个流并调用那些4服务依次。
现在,如果服务#4失败,Mule3可以自动调用,例如
取消这3项成功的服务。出于同样的原因,如果服务#3失败,我想调用cancelService#1和cancelService#2。 mule3可以帮忙解决这个问题吗?
此外,Mule3能否将先前服务的响应作为参数传递给下一个服务?例如,将服务#1的结果传递给服务#2?
提前致谢。
答案 0 :(得分:1)
您正在寻找的是compensating pattern,它适用于非设计交易的传输(即http)
实现这一目标的最佳方法可能是将补偿逻辑包含在catch exception strategy和choice router中,评估异常并确定需要补偿哪些服务。
更详细的选项是将已调用的WS存储到会话中,并使用该属性选择需要完成的补偿。我不推荐这种方法,除非你无法确定WS从异常中失败了什么