Pular para conteúdo

kiln

kiln

Jobs em segundo plano para Go, guardados em PostgreSQL, MySQL, SQL Server ou SQLite.

Referência do Go CI Cobertura Última versão Licença MIT

O dashboard do kiln: jobs por estado, vazão na última hora, filas e servidores

O kiln executa jobs em segundo plano para programas Go, da mesma forma que o Hangfire faz para .NET. Jobs são linhas no banco de dados que você já tem: eles sobrevivem a restarts e crashes, podem ser enfileirados na mesma transação que os dados que os geraram, e você pode acompanhá-los e reenfileirá-los a partir de um dashboard que já vem com a biblioteca.

  • Retentativas com backoff exponencial ou personalizado, adiamentos, timeouts e falhas permanentes
  • Workflows: jobs que esperam um ou vários outros jobs e leem suas saídas, e lotes, aninhados se necessário, com um job que roda quando o lote inteiro termina
  • Limites por chave, em todos os servidores: quantos jobs rodam ao mesmo tempo e quantos começam por segundo
  • Jobs recorrentes a partir de especificações cron, com fusos horários, uma política para execuções perdidas, e SyncRecurring para mantê-los sincronizados com o seu código
  • Console do job: linhas de log e uma barra de progresso direto de dentro de um handler, em tempo real no dashboard
  • Jobs únicos, enquanto um job está ativo ou por uma janela de tempo, com replace e debounce
  • Enfileiramento transacional: o job só existe se a sua transação for commitada
  • Cancelamento de um job em execução, a partir de qualquer processo
  • Dashboard em inglês ou português brasileiro, e uma API JSON, montado no seu próprio servidor HTTP
  • OpenTelemetry com traces desde a requisição que enfileirou um job até o handler que o executou
  • PostgreSQL, MySQL, SQL Server e SQLite, mais um store em memória para testes, todos seguindo a mesma suíte de conformidade

Tudo isso está neste repositório, sob a licença MIT. Não existe uma edição paga.

Por onde começar

  • Primeiros passos: um programa funcionando em cinco minutos, com SQLite ou PostgreSQL
  • Como funciona: o que é um job, e como os servidores dividem o trabalho
  • Conceitos: estados, enfileiramento, retentativas, workflows, limites, jobs recorrentes e mais
  • Bancos de dados: o que cada banco de dados precisa, e como escrever seu próprio store
  • Vindo do Hangfire: chamadas do Hangfire e seus equivalentes no kiln

Status

O kiln roda em produção na Sodexo, na Zeep Labs, na Starbem e no Orbit, da Cortex Labs. Se o seu time também usa, abra um pull request para se adicionar aqui.

A API é final desde a v1.0.0-rc.1. A v1.0.0 sai depois que a release candidate rodar em produção por algumas semanas sem precisar de mudança na API, e a partir daí a página de Compatibilidade descreve o que se mantém estável. Toda mudança é listada no changelog, e cada release é testado contra o anterior rodando no mesmo banco de dados, então um rolling upgrade de uma versão para a próxima continua funcionando.