Workflows 回滚处理程序现在包含步骤上下文
Workflows 使构建可靠的多步骤应用程序变得更加容易,这些应用程序能够在下游系统故障时恢复。回滚处理程序现在通过 ctx 对象接收正在回滚的步骤的原始步骤上下文。这包括 ctx.step.name、ctx.step.count、ctx.attempt 以及应用了默认值的步骤 config。
步骤配置包含用于该步骤的重试和超时设置,因此您可以根据这些字段自定义步骤恢复逻辑。
await step.do(
"create charge",
async () => {
const charge = await createCharge();
return { chargeId: charge.id };
},
{
rollback: async ({ ctx, output, error }) => {
// `output` 是被回滚步骤返回的值。
const { chargeId } = output as { chargeId: string };
await refundCharge(chargeId, {
// `ctx` 是原始步骤上下文,包括步骤名称、计数、尝试次数和配置。
reason: `${ctx.step.name}: ${error.message}`,
});
},
rollbackConfig: {
// `rollbackConfig` 控制回滚处理程序的重试和超时。
retries: { limit: 3, delay: "30 seconds", backoff: "linear" },
timeout: "5 minutes",
},
},
);请参阅回滚选项了解更多信息。