【问题标题】:Transaction involving external api calls涉及外部 api 调用的事务
【发布时间】:2018-03-01 19:19:07
【问题描述】:

我必须在需要保持本地数据库和外部(第三方)API 之间的一致性的类似存储库的类上实现操作。其中一些 API 可能只为某些操作提供部分成功/部分失败语义(即非原子)。但是,我想确保我实现的操作确实具有原子/事务语义,例如如果对 API 的请求成功,我只会更新我的数据库,并且该外部服务中的任何内容也会复制到数据库中。

是否有任何有用的模式来处理这个问题,或者其他关于如何解决这类问题的指针?

谢谢!

【问题讨论】:

  • 在我看来,您想在完成另一个操作后执行一些操作。因此,看起来它将通过使用“状态设计模式”来处理。您可以使用图表进行详细说明以更好地理解。

标签: design-patterns transactions repository-pattern atomic design-principles


【解决方案1】:

Command 模式似乎是一种封装可回滚操作并为这些操作提供统一接口的好方法。

然后,工作单元模式可用于定义涉及多个命令的事务,如果其中任何一个失败,则每个命令都会回滚。

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2012-11-15
    • 2012-08-01
    • 2013-03-07
    相关资源
    最近更新 更多