콘텐츠로 이동

의존성 무시

소스 URL: https://docs.bullmq.io/guide/flows/ignore-dependency

일부 상황에서는 부모 작업이 있을 때, 자식 작업 중 하나가 실패하더라도 이를 무시해야 할 수 있습니다.

이 요구사항을 해결하는 패턴은 ignoreDependencyOnFailure 옵션을 사용하는 것입니다. 이 옵션을 사용하면 작업이 실패했을 때 부모 작업에서 해당 의존성을 무시하므로, 부모 작업은 실패한 자식 작업을 기다리지 않고 완료됩니다.

const flow = new FlowProducer({ connection });
const originalTree = await flow.add({
name: 'root-job',
queueName: 'topQueueName',
data: {},
children: [
{
name,
data: { idx: 0, foo: 'bar' },
queueName: 'childrenQueueName',
opts: { ignoreDependencyOnFailure: true },
children: [
{
name,
data: { idx: 1, foo: 'bah' },
queueName: 'grandChildrenQueueName',
},
{
name,
data: { idx: 2, foo: 'baz' },
queueName: 'grandChildrenQueueName',
},
],
},
{
name,
data: { idx: 3, foo: 'foo' },
queueName: 'childrenQueueName',
},
],
});

{% hint style=“info” %} 이 옵션이 설정된 child가 실패하면, 더 이상 대기 중인 자식 작업이 없을 때에만 부모 작업이 waiting 상태로 이동합니다. {% endhint %}

이 옵션을 사용해 실패한 자식 작업은 getIgnoredChildrenFailures 메서드로 조회할 수 있습니다.

const ignoredChildrenFailures =
await originalTree.job.getIgnoredChildrenFailures();