gpt4 book ai didi

spring - 如何回滚分布式事务?

转载 作者:行者123 更新时间:2023-12-03 23:13:33 24 4
gpt4 key购买 nike

我有三个不同的 Spring Boot 项目,它们具有独立的数据库,例如帐户休息、付款休息、网关休息。

  • account-rest : 创建一个新帐户
  • payment-rest : 创建一个新的支付
  • gateway-rest : 调用其他端点

  • 在网关休息处,有一个端点调用其他两个端点。
    @GetMapping("/gateway-api")    
    @org.springframework.transaction.annotation.Transactional(rollbackFor = RuntimeException.class)
    public String getApi()
    {
    String accountId = restTemplate.getForObject("http://localhost:8686/account", String.class);
    restTemplate.getForObject("http://localhost:8585/payment?accid="+accountId, String.class);
    throw new RuntimeException("rollback everything");
    }

    当我在网关或任何其他端点抛出异常时,我想回滚事务并恢复所有内容。

    我怎样才能做到这一点 ?

    最佳答案

    不可能回滚通过休息或类似的东西访问的外部依赖项。
    你唯一能做的就是补偿错误,你可以使用像 SAGA 这样的模式

    我希望这可以帮助你

    关于spring - 如何回滚分布式事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54745015/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com