我正在使用持久函数。我已经理解了持久性函数是如何工作的,所以它有一个编排来控制流程(活动的工作顺序),编排负责活动的顺序。
但目前我有一个问题,我找不到正确的答案,也许你可以帮助我:
想象一下,我有一个编排,有5个活动。其中一个活动调用一个API,该API将获得一个字节数组形式的文档。
如果其中一个活动失败,编排可以抛出异常,我可以通过代码检测到这一点。
此外,我有一些重试选项,以2分钟的间隔重试活动。但是..。如果这些重试没有成功怎么办?
因为我能够阅读,所以我可以使用"ContinueasNew“方法来重新启动编排,但我认为有一个问题。如果我使用此方法在1小时后重新启动编排,它是否会恢复活动?
我的意思是,如果第一个活动完成了,当我由于其中一个活动失败而重新启动编排时,它会像以前一样在第二个活动上恢复吗?
谢谢你们抽出时间来。
发布于 2020-09-08 16:27:02
如果重新启动编排,它将不具有前一个编排的任何状态。因此,第一个活动将再次运行。
如果您不希望发生这种情况,则需要重试第二个,直到它成功为止。不过,我不建议将其设置为无限的,编排应该总是在某个时刻结束。我只是将重试次数增加到一个足够高的数字,这样我就可以确信处理将在至少99%的情况下成功。(您的活动失败的可能性有多大?)然后,如果它仍然失败,您可以向队列发送一条消息,并让它触发一些警报。然后,您可以从头开始创建它。如果某项操作多次失败,导致重试量被破坏,则可能是数据本身出了问题,通常在这一点上可能需要手动干预。
另一种选择是,如果重试失败,则从编排内部发送警报,然后等待来自批准或拒绝重试的管理员的外部事件。
https://stackoverflow.com/questions/63789648
复制相似问题