我浏览了Spring Statemachine文档,但在某些情况下没有找到明确的答案。如果有人可以澄清我的问题,我将不胜感激。
方案1:如何重试与操作失败有关的错误?可以说我有以下状态S1,S2和S3,当我们从S1过渡到S2时,我想执行操作A2。如果操作A2失败,我希望每隔一段时间重试一次。使用Spring StateMachine有可能吗?
例如,请考虑AWS状态机的“步骤功能”。步骤功能状态中的所有工作均使用Task完成。并且可以配置Task以便重试。
transitions
.withExternal()
.source(States.S1)
.target(States.S2)
.event(Events.E1)
.action(action());
方案2:假设状态机具有状态S1,S2和S3。当前状态为S2。如果服务器在启动时出现故障,状态机的执行是否将从中断的地方继续执行,还是我们必须重新做一遍?
方案3:当后卫返回false(可能是由于错误情况)并阻止过渡时,接下来会发生什么?
如何重试失败的动作?
Spring State Machine中有两种类型的动作-过渡动作和状态动作。在方案1中,您正在谈论过渡动作。
指定过渡动作时,如果动作失败,也可以指定错误处理程序。弹簧状态机文档中清楚地记录了这一点。
.withExternal()
.source(States.S1)
.target(States.S2)
.event(Events.E1)
.action(action(), errorAction());
在您的errorAction()
方法中,您可以实现您的逻辑。可能的选项是:
还有官方的Tasks示例,演示了恢复/重试逻辑(源代码)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句