bull 在add job 时,有一个 backoff 选项,用于指定当 job 失败时的退避策略
backoff?: number | BackoffOptions | undefined;
interface BackoffOptions {
/** 策略类型,可以是自定义类型,也可以是内建类型 fixed / exponential */
type: string;
/** 退避延迟,由退避策略函数使用 */
delay?: number | undefined;
/** 定制策略选项 */
options?: any;
}
具体的说,当 job 失败时会根据策略函数,得到一个 delay 值
根据 delay 来决定让 job 失败 / 重试 job / 延迟 job
const delay = await backoffs.calculate(....);
if (delay === -1) {
moveToFailed = true;
} else if (delay) {
...
multi.moveToDelayed(args);
command = 'delayed';
} else {
multi.retryJob(scripts.retryJobArgs(this, ignoreLock));
command = 'retry';
}
Bull任务队列在添加job时,允许设置backoff选项来定义失败时的重试策略。当job执行失败,系统会根据预设的策略计算延迟时间(delay),决定是否立即重试、延迟重试或终止。内置策略包括固定延迟(fixed)和指数延迟(exponential)。此外,用户还可以自定义策略函数,通过队列配置传入。自定义策略通常需要根据尝试次数和错误信息返回合适的delay值。
订阅专栏 解锁全文
134

被折叠的 条评论
为什么被折叠?



