수동 재시도
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 },);