我正在设计一个依赖于两个甚至三个 SOAP 服务进行更新的服务。例如,流程可以是这样的:
- 我的 SOAP 客户端在系统 A 中调用 customerUpdate
- 我的 SOAP 客户端在系统 B 中调用 customerUpdate
在大多数情况下,这可以正常工作,系统将非常稳定(目标是 99% 的正常运行时间),但总会有 1%。我怎样才能使这接近交易。
我一直在寻找一些文献或类似设计的人的经验,但到目前为止没有成功。
问题是如果 SOAP 调用 1 正常,但调用 2 失败,我应该如何通知调用者我的服务。
到目前为止,我看到了以下解决方案:
- 我发出一条错误消息,告诉用户发生了什么:系统 A 已更新,但系统 B 没有。他们必须重新发送以更新两个系统。
- 当更新失败时,我创建了一个更新队列,并给出一个 SOAP 响应,告诉用户系统 B 脱机/无响应但将被更新,系统 A 已更新。
有没有人偶然发现这种情况下经过测试的设计模式?或者也许有经验的人可以为我指明正确的方向,应该首选两者中的哪一个?哪一个更容易维护?
我确实意识到这可能会导致更多的讨论而不是有针对性的问题,但我希望没关系。