Open Roy-se7en opened 1 year ago
既然回滚了就不应该继续向前执行了。应该重新建立业务,否则就把问题弄复杂了。
个人理解:每一次业务操作应该单一化。
所以确实是不会记录步骤2的信息?人工介入也只能继续回滚?
既然回滚了就不应该继续向前执行了。应该重新建立业务,否则就把问题弄复杂了。
个人理解:每一次业务操作应该单一化。
有时候碰到的情况是,确实无法回滚,例如:更新数据,正常我们不会去记录更新前的数据,所以也就没办法回滚。 所以只能希望保留当时saga事务的所有信息,不管是继续回滚,还是往前执行,都有原始参数
TCC 可能更适合这种场景,提交事务之前,先锁定资源,以便回滚。
TCC 可能更适合这种场景,提交事务之前,先锁定资源,以便回滚。
谢谢,那我考虑换成TCC试试
TCC 可能更适合这种场景,提交事务之前,先锁定资源,以便回滚。
不过我采用的是远程访问webpi执行步骤,这种应该也实现不了基于数据库的事务回滚吧?
他是按每个独立单元按顺序排列执行的,不属于整个事务
执行不报错,即认为独立单元成功(每个阶段都如此)
他是按每个独立单元按顺序排列执行的,不属于整个事务
执行不报错,即认为独立单元成功(每个阶段都如此)
了解,但是还是回到我的标题的问题,有没有哪里可以设置unit表会保存 所有编排步骤的信息?
unit 表属于功能性的表,用来判断或执行整个流程。
如果有必要可以在业务层上单独记录这些信息
unit 表属于功能性的表,用来判断或执行整个流程。
如果有必要可以在业务层上单独记录这些信息
ok, 谢谢你的回复和建议
saga_app_unit 不会记录编排的所有步骤信息,只会记录执行成功的步骤? 举例: 步骤编排:A向B转账
步骤1执行成功,步骤2执行失败,之后回滚步骤1(回滚失败-超过最大次数), saga_app_unit表中只有 步骤1的记录,没有步骤2的记录 上述例子中,假如最后需要人工介入 介入方式1:继续人工回滚,没问题 介入方式2:可能继续执行步骤2(B加100块),缺少信息了
这种情况,请问有什么办法吗