为什么有这个疑问呢,因为这似乎是个少用的工具,gorm
也不支持。都是又觉得有必要,在一些场景下可能会用到,例如在服务层的方法中向消息队列发布消息,这显然是要在事务成功提交后发布的。
实现大致方向是封装事务方法,在context
中写一个值来存储回调方法。
1
securityCoding 121 天前 1
想复杂了吧哥,这两个异构中间件就正常业务流程写就好了吧, tx 提交后再调用 mq
|
2
dobelee 121 天前 2
没必要这么花里胡哨,你这样也保证不了一致性。还不如保持存储层简单干净,消息逻辑里发就行。
|
3
lasuar 121 天前 1
这不是一个少用的工具,而是一个性化的需求。
|
5
xiaozirun OP 主要是框架导致,使用了子事务,导致服务层的事务提交不一定是最终提交。
|
6
xiaozirun OP @securityCoding 但是 gorm 的 Transaction 方法可以开启子事务,当前事务的提交不一定代表最终提交,所以想着需不需要这样的工具,或通过其他方式。
|
7
Kauruus 119 天前 2
用 outbox 模式,把消息也写到 db 。
|