typescript - NestJS Bull-köer - Saknad lås för jobb misslyckades


Jag använder Bull med NestJS för att hantera en jobbkö. I processhanteraren vill jag markera ett jobb som misslyckat istället för slutfört, men det verkar - även efter att ha läst dokumentationen - att Job#moveToFailed()-metoden endast är tillåten för väntande jobb.

Faktum är att det utlöser ett felmeddelande som säger "Saknad lås för jobb $ {jobId} misslyckades". Men, att anropa Job#moveToFailed med ignoreLock-parametern satt till true går allt bra.

Vad händer om jag ignorerar låset och flyttar ett jobb till misslyckat? Finns det någon bieffekt? I mitt scenario kommer köjobben alltid att tas om hand av samma @Processor.

Här är kodbiten jag kör för teständamål:

@Process()
async transcode(job: Job<unknown>): Promise<any> {
  const jobData = job.data as Record<string, string | unknown>
  if (jobData == null) {
    await job.moveToFailed({ message: 'Hook marked as failed because of missing data' })
    return
  }

  // do other stuff for job execution..
}

Svar #1

Du kan ange false som en token-parameter (det ignorerar tokenkontrollen).

await job.moveToFailed({ message: 'Hook marked as failed because of missing data' }, false)

Jag kunde lägga till '0' istället för false och det fungerade för mig, men parametertypen är Boolean som nämnts i kommentarerna nedan.

Relaterade artiklar