我有一个块处理步骤:
- 1) 在数据库中创建一个用户
- 2) 通过 HTTP 调用在远程系统上打开一个帐户
我们为远程系统上的帐户付费,并且在批处理失败期间,我们希望避免创建永远不会使用的远程帐户,因为用户已在我们的数据库中回滚......
如果我的块大小为 100,那么如果在远程调用第 50 个项目的 2) 期间发生异常,那么我的业务逻辑可以捕获该异常,尝试关闭该特定项目的远程帐户,然后重新抛出触发块回滚的异常。
但是,对于之前处理的第 49 项,数据库中的用户将被回滚,但帐户不会被关闭。
因此,将在数据库上回滚 50 个用户,但只会关闭 1 个远程帐户。
如何组织我的步骤以关闭 50 个远程帐户(如果此手动回滚失败,这不是一致性问题:尽力而为)