gpt4 book ai didi

postgresql - jdbcTemplate如何在微服务上部分http请求成功部分http请求失败时回滚

转载 作者:行者123 更新时间:2023-11-29 12:51:21 25 4
gpt4 key购买 nike

我有基于微服务构建的 spring boot 项目,并使用 KONG 作为 api 网关。所有服务都在 Docker 容器中。

在我的情况下,我使用 serviceA 循环 20 次,通过 jdbcTemplate 请求删除 serviceB 中的记录。前 10 个请求成功。所以从serviceB 的postgresql 数据库中删除了10 条记录。但是第 11 个请求是错误的。所以我想回滚从数据库中成功删除的所有 10 条记录。

我的问题是在这种情况下我可以回滚吗?如果可以回滚,我该怎么做?我应该使用哪种技术?这种情况可以用Spring cloud stream和Kafka来回滚吗?

最佳答案

一种选择是使用分布式事务,这是一种相当繁重的方法...

除此之外,您可以更改架构,这也不是完美的建议。

寻求一些真正的建议。

这里的一般问题是,如果这是唯一有问题的情况。如果是这样 - 那很容易 - 以允许在一次操作中进行多次删除的方式扩展您的 API。请查看 Oracle/Scim API .所以改变单个组是原子的。问题开始了,当有人将用户从一个组移动到另一个组时。因此,也许您可​​以通过添加特殊方法来处理有问题的情况——比如提供的 patch

除此之外。您可以使用 command 设计模式并为每个操作恢复。这仍然很棘手,因为并非所有还原都是可能的,但这在很大程度上取决于您的情况。

更新

有类似 Saga 模式的东西。对于特定操作,准备了还原操作。并且有一位经理知道出了什么问题,需要哪些恢复。 Here是关于这个的文章。有时它可以工作,但是......逆转确实是有问题的操作 - 比如发送电子邮件。 :)

关于postgresql - jdbcTemplate如何在微服务上部分http请求成功部分http请求失败时回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53151527/

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