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.