MongoDB 个跨越多个 Web 请求的事务

MongoDB transactions spanning multiple web requests

我正在尝试使用 Go 通过 HTTP 实现 MongoDB 事务 API 服务 客户端发送请求到:/db/transaction/begin 获取交易ID 为了将所有后续与事务相关的 CRUD 操作 API 请求与该事务 ID 绑定 最后客户端向 /db/transaction/{transaction_id}/commit 发送请求 或 /db/transaction/{transaction_id}/rollback (有点类似于 Firestore Transaction)

我能够使用 ArangoDB 实现这种行为,因为它的 Go Driver 允许我设置每个 CRUD 操作的事务 ID (https://godoc.org/github.com/arangodb/go-driver#WithTransactionID)

但不幸的是我无法通过官方 MongoDB Go Driver

实现这一点

我错过了什么吗? 是否有解决方法或任何自定义实现可以帮助我?

提前致谢

更简单的解决方案是在您的应用程序中存储(缓冲)操作,并在提交端点运行时将它们一起提交给 MongoDB。

从技术上讲,您可以在您的应用程序中手动管理事务生命周期并实现跨 Web 请求的事务,但这是 1) 会很尴尬,并且 2) 您将失去驱动程序为您做的各种瞬态错误处理在 withTransaction API.

为此:

分叉和修补驱动程序可能更容易,但这显然还有其他问题,因为您的代码库与官方驱动程序代码库不同。