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

Dúvidas de uso dos Jobs #19

Closed kennedyrs closed 3 years ago

kennedyrs commented 4 years ago

Eu tenho uma dúvida quanto ao Bull, dentro do método handle, como eu digo que algo não deu certo?

Por exemplo, dependendo da resposta de uma API, quero que a fila tente executar a ação novamente mais tarde.

async handle(job) {
    const { data } = job; 

   ...

    return data;
  }

Seria só lançar uma Exception?

throw new Error('Deu erro...')
HigoRibeiro commented 4 years ago

Fala @kennedyrs ! Isso mesmo, lança exceção que é a maneira de dizer que o serviço não deu certo!

kennedyrs commented 4 years ago

Outra dúvida, qual seria a melhor estratégia para acionar um job assim que a aplicação iniciar?

Bull.add(Job.key, { delay: 6000, attempts: 3, repeat: { cron: '0 */6 * * *' } })

wemersonrv commented 4 years ago

Cria um ServiceProvider com adonis make:provider SeuProvider e roda chame ele no método *boot do provider.

Ah, tem que registrar o provider no array providers do start/app.js

const path = require('path')

const providers = [
  ...
  '@rocketseat/adonis-bull/providers/Bull',
  path.join(__dirname, '..', 'providers', 'SeuProvider'),
]
jpedroschmitz commented 3 years ago

Hey @kennedyrs, this issue was closed because it was not following the guidelines described here.

While contributing or interacting in any way in this project, refrain from using any language other than English.

RicardoPBarbosa commented 3 years ago

Cria um ServiceProvider com adonis make:provider SeuProvider e roda chame ele no método *boot do provider.

Ah, tem que registrar o provider no array providers do start/app.js

const path = require('path')

const providers = [
  ...
  '@rocketseat/adonis-bull/providers/Bull',
  path.join(__dirname, '..', 'providers', 'SeuProvider'),
]

Estou tentanto fazer isto mas no Provider em que função corro os Bull.add()? Tentei em register, boot mas não estou conseguindo importar o Bull do tipo const Bull = this.app.use('Rocketseat/Bull'); dá sempre Bull.add is not a function.

Exemplo:

boot() {
    const Bull = this.app.use('Rocketseat/Bull');
    const Job = this.app.use('App/Jobs/Job');
    Bull.add(Job.key, { attempts: 3, repeat: { cron: '0 0 * * *' } });
}