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

Ciclo de vida da aplicação

O ponto de entrada de uma aplicação Colibri é explícito: primeiro inicializamos os componentes básicos, depois os módulos opcionais e, por último, o processo que mantém a aplicação em execução.

Ordem de inicialização

package main

import (
"github.com/colibriproject-dev/colibri-sdk-go"
"github.com/colibriproject-dev/colibri-sdk-go/pkg/database/cacheDB"
"github.com/colibriproject-dev/colibri-sdk-go/pkg/database/sqlDB"
"github.com/colibriproject-dev/colibri-sdk-go/pkg/web/restserver"
)

func main() {
colibri.InitializeApp()

sqlDB.Initialize()
cacheDB.Initialize()

restserver.AddRoutes(routes)
restserver.ListenAndServe()
}

colibri.InitializeApp() executa, nesta ordem:

  1. carrega e valida as variáveis de ambiente;
  2. configura logging;
  3. registra as validações padrão;
  4. prepara o encerramento por sinais do sistema;
  5. inicializa o monitoramento;
  6. configura o provedor de cloud.

Os módulos de SQL, cache, mensageria e storage são opcionais. Inicialize apenas os que a aplicação usa.

aviso

Funções de módulos opcionais dependem de sua respectiva inicialização. Por exemplo, uma chamada a sqlDB.NewQuery antes de sqlDB.Initialize() retorna erro de banco não inicializado.

Encerramento

O servidor, SQL, cache e monitoramento registram seus próprios observadores de encerramento. Para um recurso criado pela aplicação, implemente observer.Observer e registre-o:

type worker struct{}

func (worker) Close() {
// Interrompa consumidores e libere recursos.
}

observer.Attach(worker{})

Consulte encerramento seguro para processos em segundo plano.