请考虑以下情形:
我的协调器O
启动,并调用子协调器S
。 S
成功处理了活动A1
和A2
,但失败了A3
。我在A3
上有自动重试功能,但是没有运气(我正在调用的Web服务给出404)。没问题,我捕获到异常并为A1
和A2
执行清理。
最终,我需要重试该过程。 正确的方法是什么?
我当前的方法是,将消息写入具有可见性延迟的自定义毒药队列,然后使用另一个AZ函数从该队列中拉出并重新启动子编排器。
如果我可以使用相同的调用ID重新启动相同的子编排器,那也是理想的选择。从理论上讲,这可以使我不必重做A1
和A2
以及清除它们!
这是正确的思路,还是我滥用了持久功能?
答案 0 :(得分:1)
有一个API-Rewind Instances (预览)-我相信您可以使用它。您需要业务流程实例ID才能使用它。
您应该能够query for failed instances,基于custom status进行过滤,然后在它们上调用快退。