[seata]saga模式的补偿失败

2024-04-28 887 views
2

1,有控制台看到我的失败 重试中的任务列表吗? 2,重试的间隔时间如何配置 3,重试任务是否持久化了?

回答

8

1、控制台还没有根据状态筛选数据的功能,正在规划中。 2、重试策略,暂不支持,正在规划中。 3、重试任务持久化指的是任务日志吗?目前是在定时任务根据状态进行相应处理而已。暂未使用任务调度框架。

6

1,补偿重试中 列表 2,补偿重试是有的。我看是 2秒重试间隔。 3,补偿任务 会持久化吗

4

3,比如我 正向失败了t3, 现在需要补偿c3 c2 c1。这时系统stop了。 c3 c2 c1 会持久化吗?下次strat的时候继续执行c3 c2 c1.

9
  1. 重试中,也只是全局事务的状态之一,到时候会添加根据状态筛选数据的功能的。
  2. 重试当然有,这我知道。我说的是它需要补偿策略来提供灵活的可配置化功能。而不是固定的每隔2秒重试一次。
  3. 各节点的持久化本来就是有的,在client端保存着的。
3

有什么文档吗。我在官网的资料还没看到有控制台。

2

3,在client端保存,那我是不是需要 在docker中 保留这个文件夹。

2

控制台是针对server端的,从1.5.0开始的新特性,还没有贡献者来持续输出其说明文档。主要目前功能也还很少。

1

saga模式,除了全局事务注册并保存一份在server端外,其他的数据全部保存在了client端。默认情况下节点数据也不会上报server。所以,server控制台不是很好去管理saga。

未来,saga的流程设计器应该是会集成在server端的。并且对应的流程都可以在server端进行管理。类似于工作流一样。

2

那 如果 执行事务时,进程挂了,进程restart后,会 继续恢复之前的事务执行吗。

4

全局事务超时后,会进行补偿处理。

5

你可以在本地测试一下。

5

我编写了一个,一个 正向 会异常,补偿也异常的 调用。 执行后,会2s 补偿重试。

我把client stop后,再start。 不会再补偿重试了。

0
@Override
    public boolean reduce(String businessKey, int count) {
        LOGGER.warn("reduce inventory succeed, count: " + count + ", businessKey:" + businessKey);
        throw new RuntimeException("121212");
//        return false;
    }

    @Override
    public boolean compensateReduce(String businessKey) {
        LOGGER.warn("compensate reduce inventory succeed, businessKey:" + businessKey);
//        return false;
        throw new RuntimeException("121212a");

    }
4

你看下server端有没有报错。

5

循环补偿时, will retry later.

stop后 ,will retry later.+RM channels is empty.

0

应该是RPC连接问题。过一段时间应该会自行恢复的。

1

你使用的是哪个版本?