Background jobs: ActiveJob
O curso examina o ActiveJob::Base, a camada de framework para a qual os jobs desta aplicação são escritos, acima do backend que os roda. Trata do adaptador de fila definido por ambiente, da serialização de argumentos como GlobalID ou id simples e de quando retry_on e discard_on têm alguma exceção para capturar. Mostra ainda como limits_concurrency e queue_as viram colunas nas tabelas do Solid Queue, os callbacks de perform e o deliver_later, que coloca um job do ActionMailer na fila pelo mesmo adaptador.
O que você vai aprender
- ✓Como o queue_adapter roda o mesmo job no :async em desenvolvimento e no :solid_queue em teste e produção
- ✓Como o ActiveJob serializa um registro como GlobalID, e por que a aplicação passa um id simples com find_by
- ✓Quando retry_on e discard_on se aplicam, conforme uma exceção chegue ou não ao perform
- ✓Como o limits_concurrency grava uma concurrency_key e manda um segundo job para as execuções bloqueadas
- ✓Como queue_as, queue_with_priority e config/queue.yml definem qual worker reserva um job
- ✓Como o deliver_later coloca na fila o ActionMailer::MailDeliveryJob, e onde entram os callbacks de perform
A camada de framework acima do backend
O curso de nível Pleno "Solid Queue: arquitetura de jobs", anterior nesta série, examinou as tabelas em que o estado de um job é guardado e reservado. Todas essas tabelas pertencem ao Solid Queue, um backend. Os jobs desta aplicação não são escritos para o Solid Queue, e sim para o ActiveJob::Base,…
Ler a aula completa grátis →Currículo
7 aulasA camada de framework acima do backend
Mostra que os jobs da aplicação usam só vocabulário do ActiveJob, com o adaptador de fila escolhido por ambiente.
Argumentos pela fila: GlobalID vs. um ID simples
Compara argumentos GlobalID, que lançam exceção com registros apagados, com id simples e find_by, que devolve nil.
retry_on e discard_on: onde servem, e onde não
Explica por que o DeliverWebhookJob usa retry_on enquanto o serviço do FetchSiteIconJob trata sozinho os erros de rede.
limits_concurrency: a DSL sobre um mecanismo que dá pra verificar
Mostra o limits_concurrency gravando uma concurrency_key e bloqueando um segundo job com a mesma chave.
queue_as e onde "a fila" mora
Trata queue_as e queue_with_priority como colunas, e das listas de filas dos workers no config/queue.yml.
Callbacks de ActiveJob, e o segundo caminho de uso real: ActionMailer
Mostra o deliver_later colocando um job do ActionMailer na fila pelo ActiveJob, e os callbacks de perform sem uso.
Juntando tudo: o que o ActiveJob dá aos jobs desta aplicação
Revisa cada recurso do ActiveJob na aplicação e a regra de precedência de handlers do ActiveSupport::Rescuable.