Solid Queue: jobs em background
O curso acompanha uma classe de job escrita à mão, o Partners::FetchSiteIconJob, do ponto de chamada até as tabelas do Solid Queue que a guardam. Ele mostra por que o job recebe um id simples, o que o perform_later grava numa linha de SolidQueue::Job e as onze tabelas por onde um job passa. Também lê o config/queue.yml, com o dispatcher e os três pools de workers. Explica a conexão de banco própria do Solid Queue em desenvolvimento e onde este app usa retry_on, discard_on e limits_concurrency. Um desafio final reúne esses fatos num método Ruby.
O que você vai aprender
- ✓Por que um job recebe o id de um registro e o busca com find_by na execução
- ✓O que o perform_later grava nas linhas de SolidQueue::Job e SolidQueue::ReadyExecution
- ✓As onze tabelas do Solid Queue e como um job passa pelos estados de execução
- ✓Como o config/queue.yml configura o dispatcher, três pools de workers e o JOB_CONCURRENCY
- ✓Por que as tabelas do Solid Queue usam conexão e banco próprios em desenvolvimento
- ✓O que fazem retry_on, discard_on e limits_concurrency, e quais jobs deste app os usam
Uma classe de job escrita à mão, além da entrega de email
"Mailers: templates e async" seguiu o Solid Queue pelo deliver_later, o invólucro do Action Mailer em volta de um job. Este app também tem cinco classes de job próprias em app/jobs/: uma avalia submissões de desafios, três cuidam do trabalho com parceiros (ícones de site, anúncios de certificado,…
Ler a aula completa grátis →Currículo
7 aulasUma classe de job escrita à mão, além da entrega de email
Lê o Partners::FetchSiteIconJob e o ponto de chamada, e por que ele recebe partner.id em vez do objeto.
O perform_later cria uma linha de SolidQueue::Job que dá para inspecionar
Mostra as linhas de SolidQueue::Job e ReadyExecution que o perform_later cria quando o adapter :async sai de cena.
Onze tabelas instaladas: a máquina de estados de um job
Lista as onze tabelas instaladas do Solid Queue e como um job passa por uma tabela de execução por vez.
config/queue.yml: as configurações de dispatcher e workers deste app
Lê o config/queue.yml linha por linha: polling e lote do dispatcher, três pools de workers e JOB_CONCURRENCY.
A conexão de banco própria do Solid Queue
Explica por que o Solid Queue usa um banco separado em desenvolvimento e por que a produção usa o primário.
retry_on, discard_on, limits_concurrency: onde este app os usa
Trata de retry_on, discard_on e limits_concurrency, de quais jobs os usam e por que o FetchSiteIconJob dispensa os três.
Juntando tudo: siga um job do ponto de chamada até a tabela
Retoma o caminho de um job do ponto de chamada até a tabela e propõe o método describe_job_dispatch.