问题一:请问Seata AT模式,是必须得tm抛出异常才能触发全局事务回滚嘛?
请问Seata AT模式,rm出现异常,tm catch 到后没有事务没有回滚,是必须得tm抛出异常才能触发全局事务回滚嘛?rm可不可以呢?
参考回答:
rm捕捉异常后,回状态码给tm,tm侧用api回滚。 tm catch到异常,api回滚就行了,这种可以用api方式去begin和rollback或commit事务。
问题二:seata中是不是触发TC 发起rollback就得在代码里面抛出异常才行呢?
seata中是不是触发TC 发起rollback就得在代码里面抛出异常才行呢?如果第二个事务参与者操作数据库异常了,但是返回给事务参与者1的时候是正常的,这个时候并不会回滚吧?
参考回答:
想一下spring.本地事务是怎么回滚的想一下spring.本地事务是怎么回滚的。
问题三:Seata方法内开启异步线程保存数据,此时出现异常是否能回滚呢?
Seata方法内开启异步线程保存数据,此时出现异常是否能回滚呢?
参考回答:
取决于在主线程里shif是否有等待他的执行结果哈
问题四:请问Seata中这里出现一个异常,看异常的语义是申请全局锁,字段长度是32,这个32,有什么含义吗?
请问Seata中这里出现一个异常
看异常的语义是申请全局锁,插入global_table表时,数据长度过长,造成申请xid失败。事务分组是:${spring.application.name}-seata-group,我看了一下这个global_table表中【transaction_service_group】字段长度是32,这个32,有什么含义吗?
参考回答:
可以加长
问题五:Seata中是在同一个事务里面就上下方法,好像sql异常了是为什么呀?
Seata中是在同一个事务里面就上下方法,好像sql异常了是为什么呀?