#826

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 enviar

O resultado da sua consulta aparecerá aqui