Construa uma fila de tarefas que escale de forma limpa
Há uma fila de tarefas no banco de dados — a tabela jobs com status pending para as linhas não executadas. Cinco workers a observam de forma concorrente: cada um quer pegar a tarefa mais antiga e marcá-la como "em andamento". Um bloqueio de linha comum com um limite faz com que os cinco workers se amontoem sobre a mesma linha e se serializem. A cura é pular as linhas que já estão bloqueadas e pegar a próxima livre: cada worker recebe sua própria tarefa e o paralelismo funciona sem colisões.
jobs(id SERIAL, status, payload) contém quatro linhas pending (a, b, c, d). Pegue uma tarefa pending de jobs com o menor id, mude-a para running — as outras três continuam em pending.
Entre para ver seu histórico de envios
EntrarEntre para usar o AI Mentor
Entrar