回滚之前提交的事务

发布于 2024-12-08 18:47:22 字数 359 浏览 0 评论 0原文

在我当前正在开发的服务中,我需要提供双重操作:

  1. 发出的请求应该在数据库中注册(使用 Register() 方法);并且
  2. 请求应发送到外部网络服务以进行进一步处理(使用Dispatch()方法)。

考虑到我无法切换操作的顺序,如果第二个操作出现问题,我希望能够“回滚”第一个操作,这样当时无效的记录就不会插入到 BD 中。当然,这里的问题是我在 Register 方法内提交事务。如果出现问题,有什么方法可以从 Dispatch 方法内部将其回滚吗?

编辑:所有事务都是从.NET 端管理的。

In the service I am currently developing I need to provide a twofold operation:

  1. The request being made should be registered in the database (using Register() method); and
  2. The request should be sent to an external webservice for further processing (using Dispatch() method).

Considering that I can't switch the order of the operations, I would like to be able to "rollback" the first one if something goes wrong with the second, so that a then-invalid record does not get inserted to the BD. The problem here is that, of course, I am commiting the transaction inside the Register method. Is there any way I can roll it back from inside the Dispatch method if anything goes wrong?

Edit: All transaction are being managed from the .NET-side.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖不如嘢 2024-12-15 18:47:22

在这种情况下,数据库将无法帮助您。您必须使用相互撤销的成对操作来创建补偿事务。您的服务将有效地取代关系数据库中用于管理事务的所有工作和逻辑。

The database won't help you in this case. You have to create compensating transactions, using pairs of operations that undo each other. Your services will effectively have to replace all the work and logic that has gone into relational databases for managing transactions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文