Como funciona¶
flowchart LR
app["Seu código<br>client.Enqueue"] -- insere --> db[("Seu banco de dados<br>PostgreSQL, MySQL, SQL Server ou SQLite")]
db -- pega --> s1["servidor kiln<br>executa handlers"]
db -- pega --> s2["servidor kiln<br>executa handlers"]
s1 -- resultados, heartbeats --> db
s2 -- resultados, heartbeats --> db
dash["Dashboard"] -- lê, reenfileira --> db
Um Client escreve jobs no store. Qualquer número de Servers, no mesmo processo ou em outros, pegam os
jobs das próprias filas, executam o handler registrado para o tipo de cada job e escrevem o resultado de
volta. Eles descobrem trabalho novo pelas notificações do banco de dados (LISTEN/NOTIFY no PostgreSQL,
um bus Redis opcional no MySQL, SQL Server e SQLite) e por polling. Um servidor por vez também é o líder:
ele dispara os jobs recorrentes, resgata os jobs dos servidores que pararam de enviar heartbeat, e remove
os jobs antigos. Não existe broker nem serviço extra para rodar.