微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

跨多个Web请求的MongoDB事务

如何解决跨多个Web请求的MongoDB事务

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

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

但是不幸的是,我无法通过官方的MongoDB Go驱动程序实现这一目标

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

预先感谢

解决方法

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

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

为此:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。