大佬们请教个问题,正在使用 gorm 有些必要弄个事务提交成功后回调的工具吗?

122 天前
 xiaozirun

为什么有这个疑问呢,因为这似乎是个少用的工具,gorm也不支持。都是又觉得有必要,在一些场景下可能会用到,例如在服务层的方法中向消息队列发布消息,这显然是要在事务成功提交后发布的。 实现大致方向是封装事务方法,在context中写一个值来存储回调方法。

1468 次点击
所在节点    Go 编程语言
8 条回复
securityCoding
122 天前
想复杂了吧哥,这两个异构中间件就正常业务流程写就好了吧, tx 提交后再调用 mq
dobelee
122 天前
没必要这么花里胡哨,你这样也保证不了一致性。还不如保持存储层简单干净,消息逻辑里发就行。
lasuar
122 天前
这不是一个少用的工具,而是一个性化的需求。
xiaozirun
121 天前
@dobelee 消息大多在服务层发送,就是事务有些是接口层控制的
xiaozirun
121 天前
主要是框架导致,使用了子事务,导致服务层的事务提交不一定是最终提交。
xiaozirun
121 天前
@securityCoding 但是 gorm 的 Transaction 方法可以开启子事务,当前事务的提交不一定代表最终提交,所以想着需不需要这样的工具,或通过其他方式。
Kauruus
120 天前
用 outbox 模式,把消息也写到 db 。
xiaozirun
119 天前
@Kauruus 非常感谢,拓宽了我的眼界,outbox 模式是我现在所知道的最佳解决方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068380

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX