Pular para o conteúdo principal
Versão: Em desenvolvimento — v0.2.3

Encerramento seguro

colibri.InitializeApp() configura a observação de SIGINT, SIGTERM e SIGHUP. Os componentes do SDK registram rotinas de fechamento conforme são inicializados.

Recurso da aplicação

Implemente observer.Observer quando a aplicação possuir um recurso que precisa ser fechado:

type consumer struct {
stop func()
}

func (c *consumer) Close() {
c.stop()
}

func main() {
colibri.InitializeApp()

worker := &consumer{stop: stopConsumer}
observer.Attach(worker)

restserver.ListenAndServe()
}

Tarefas em andamento

O wait group compartilhado permite aguardar goroutines iniciadas pela aplicação:

wg := observer.GetWaitGroup()
wg.Add(1)

go func() {
defer wg.Done()
processPendingJobs()
}()

observer.WaitRunningTimeout() retorna true quando o tempo limite é atingido. Configure-o com WAIT_GROUP_TIMEOUT_SECONDS; o padrão é 90 segundos.

aviso

SIGKILL não pode ser interceptado pelo processo. Garanta que consumidores e operações sejam idempotentes para tolerar encerramentos forçados.