콘텐츠로 이동

수동 재시도

Source URL: https://docs.bullmq.io/patterns/manual-retrying

작업이 처리되는 중에 즉시 재시도하는 것이 유용한 상황이 있습니다.

이는 moveToWait 메서드를 사용해 처리할 수 있습니다. 다만, 작업이 워커에 의해 처리되는 동안 워커는 특정 토큰 값을 사용해 해당 작업의 락을 유지한다는 점이 중요합니다. moveToWait 메서드가 동작하려면 오류 없이 락을 해제할 수 있도록 해당 토큰을 전달해야 합니다. 마지막으로, 프로세서에서 특별한 에러(WaitingError)를 throw하여 종료해야 하며, 이렇게 해야 워커가 작업이 재시도되었음을 인지하고 대신 완료 처리(또는 실패 처리)를 시도하지 않습니다.

import { WaitingError, Worker } from 'bullmq';
const worker = new Worker(
'queueName',
async (job: Job, token?: string) => {
try {
await doSomething();
} catch (error) {
await job.moveToWait(token);
throw new WaitingError();
}
},
{ connection },
);