Solid Queue: prioridades
Este curso acompanha o número de prioridade de cada job no Solid Queue. Mostra de onde ele vem quando nenhum job define um: o Rails devolve nil e o Solid Queue grava 0. Trata do queue_with_priority fixo e com bloco, da substituição por chamada com .set(priority:) e da precedência fixa entre eles. Mostra que novas tentativas mantêm a prioridade, a menos que o retry_on defina outra. Explica como um único scope ordena execuções prontas e bloqueadas, e por que a prioridade nunca envelhece. Termina com níveis nomeados para jobs que dividem uma fila.
O que você vai aprender
- ✓Como o nil do Rails vira o DEFAULT_PRIORITY 0 do Solid Queue
- ✓O queue_with_priority fixo e com bloco, e como o .set(priority:) passa por cima dos dois
- ✓Como novas tentativas mantêm a prioridade e como a opção priority: do retry_on a muda
- ✓Como o scope ordered ordena execuções prontas e bloqueadas por priority e job_id
- ✓Por que a prioridade nunca envelhece e como um job de baixa prioridade pode esperar sem limite
- ✓Como um conjunto pequeno de níveis com nome organizaria jobs que dividem uma fila
Prioridade é uma decisão, não um padrão
Nenhum job desta aplicação chama queue_with_priority; uma busca por priority em app/jobs/ não encontra nada. Mesmo assim todo job tem uma prioridade, porque toda linha de solid_queue_jobs tem: o db/queue_schema.rb define a coluna como null: false. Esta aula trata de onde vem esse número quando…
Ler a aula completa grátis →Currículo
7 aulasPrioridade é uma decisão, não um padrão
Mostra que o Rails deixa a prioridade como nil e o Solid Queue grava 0 ao montar a linha.
Prioridade estática vs dinâmica, e quem vence
Compara o queue_with_priority fixo e com bloco ao .set(priority:), que sobrescreve o valor da classe quando presente.
Retries herdam prioridade: a menos que você diga o contrário
Mostra que a nova tentativa, gravada como linha nova, mantém a prioridade original, a menos que o retry_on passe priority:.
Onde a prioridade é lida: um recap com uma consequência
Explica o scope ordered compartilhado e por que uma nova tentativa fica atrás do trabalho de mesma prioridade.
Sem envelhecimento, sem piso: prioridade nunca expira
Mostra que o Solid Queue não tem envelhecimento, e um job de baixa prioridade espera enquanto chega trabalho urgente.
Um esquema de prioridade para os jobs desta aplicação
Esboça um conjunto pequeno de níveis de prioridade com nome e explica por que a aplicação mantém tudo em 0.
Juntando tudo: um número, seis regras
Revê as regras de onde a prioridade começa e o que a muda, e termina com o desafio PriorityDispatcher.