Rocketseat / adonis-bull

The easiest way to start using an asynchronous job queue with AdonisJS. Ready for Adonis v5 ⚡️
MIT License
310 stars 57 forks source link

Como detectar um que um job falhou, após todos os attempts? #34

Closed wemersonrv closed 4 years ago

wemersonrv commented 4 years ago

Vendo a documentação sobre eventos aqui em https://github.com/Rocketseat/adonis-bull#events me surgiu uma dúvida:

Tem algum evento específico para quando o job finaliza as tentativas e não consegue processar?

Olha um exemplo onde tento 3 vezes:

Bull.add(SendMessageJob.key, msg, {
   attempts: 3, 
})

image

A parte dos attempts funcionou certinho, porém queria achar um modo de me disparar alguma notificação quando ele processar todos os attempts e falhar. Mas não quero detectar a falha em cada tentativa, somente quando terminar todos os attempts. Existe algum evento específico pra isso ?

wemersonrv commented 4 years ago

Olhei na doc to bull direto e não tem evento específico nesse caso, mas tem um contador das tentativas no job

job.attemptsMade Quantidade de tentativas

job.opts.attempts Número de tentativas a serem processadas. Vai disparar o evento onFailed em todas.

class SendMessageJob {
   static get key() {
      return 'Sync Outgoing Messages'
   }

   async handle(job) {
      // ...
   }
   onFailed(job, error) {
      const { attemptsMade, opts: { attempts } } = job

      if (attemptsMade == attempts) {
         console.log(`Atingiu o máximo de ${attempts} tentativas com falha`)
      }
   }
}
jpedroschmitz commented 3 years ago

Hey @wemersonrv, thanks for opening an issue 👋🏻

While contributing or interacting in any way in this project, refrain from using any language other than English. This way, if another person has the same question, they can easily find a solution by checking all the issues. I recommend you take a look at the guidelines described here 💜