Solid Queue: arquitetura de jobs
Este curso lê o código da solid_queue 1.3.2 que move linhas entre as onze tabelas da gem, junto com o SQL que cada movimento produz. Ele cobre a transação de enqueue e o claim do worker com FOR UPDATE SKIP LOCKED e dois índices de polling. Também trata de limites de concorrência como linhas de semáforo e de bloqueio, e de jobs agendados, falhos e tentados de novo. Depois vêm heartbeats de processos, claims órfãos, tarefas recorrentes, pausas e a validação do pool de conexões que pode parar o supervisor no boot. A última aula segue um job por todas as tabelas.
O que você vai aprender
- ✓A transação de enqueue e por que linhas de execução repetem colunas do job
- ✓Como reivindicar jobs com FOR UPDATE SKIP LOCKED e os dois índices de polling
- ✓Limites de concorrência como linhas de semáforo e execuções bloqueadas
- ✓Jobs agendados, falhos e tentados de novo, e a limpeza de linhas concluídas
- ✓Registro de processos, heartbeats e o destino de claims órfãos
- ✓Tarefas recorrentes, pausas de fila e a validação do pool de conexões no boot
Enfileirar é uma transação, duas tabelas
O curso de nível Júnior "Solid Queue: jobs em background" listou as onze tabelas solid_queue_* desta aplicação e leu o config/queue.yml linha por linha. Parou nos nomes. Este curso lê o código que move linhas entre essas tabelas, usando a solid_queue 1.3.2. Ele captura o SQL que cada movimento…
Ler a aula completa grátis →Currículo
7 aulasEnfileirar é uma transação, duas tabelas
O que o perform_later grava: uma transação com a linha do job e uma linha ready que copia fila e prioridade.
O claim: FOR UPDATE SKIP LOCKED e dois índices de polling
Como um worker reivindica linhas com FOR UPDATE SKIP LOCKED, ordena por prioridade e usa dois índices de polling.
Controles de concorrência: uma linha de semáforo e uma linha bloqueada
Como o limits_concurrency funciona com uma linha de semáforo, execuções bloqueadas, um insert seguro contra corrida e expiração.
Agendado, falho e refeito: mais três tabelas
Como o dispatcher move jobs agendados, como falhas são registradas e por que retry_on cria uma segunda linha de job.
Processos, heartbeats e claims órfãos
Como processos se registram e mandam heartbeats, e como claims de workers mortos ou sumidos viram execuções falhas.
Tarefas recorrentes, pausas, e o pool que se recusa a iniciar
Tarefas recorrentes protegidas por um índice único, pausas de fila e a checagem de pool que aborta o supervisor.
Juntando tudo: um job por onze tabelas
Um job desta aplicação seguido pelas onze tabelas, com as decisões de desenho e os custos que elas codificam.