【问题标题】:MongoDB Panache Best Practices for Multi-Document Transactions多文档事务的 MongoDB Panache 最佳实践
【发布时间】:2020-06-17 08:15:13
【问题描述】:

关于 MongoDB Panache 文档 [https://quarkus.io/guides/mongodb-panache]

中的以下引用

MongoDB 从 4.0 版开始提供 ACID 事务。带有 Panache 的 MongoDB 不为它们提供支持。

因此,是否有推荐的方法或最佳实践来处理多文档事务以确保原子性?

考虑这个例子:

public void buyCarTest() {   
    carRepository.increaseStock(1); 
    cashRepository.decreaseCash(10000);
}

如果我们手动进行,那就是:

  1. 检查对第二个存储库的写入操作是否失败,并且
  2. 如果是这样,请还原在carRepository 中所做的更改

这种方法充其量似乎是微不足道的,尤其是当我要写入的存储库超过 2 个时。

谢谢。

【问题讨论】:

    标签: quarkus quarkus-panache


    【解决方案1】:

    你提出的是所谓的补偿,实施起来很棘手。

    我宁愿为此使用基于事件的机制:您发送两个事件并异步处理它们,因此其中一个租户(库存经理)的故障不会影响第二个。

    您也可以使用 MongoDB 事务,但为此您需要使用 MongoDB API 而不是 Panache(因此从您的实体获取集合并使用它)。

    对 MongoDB 的事务支持正在进行中(请参阅 https://github.com/quarkusio/quarkus/pull/7222),您可以观看此问题,以便在实施时收到通知。

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多