Voltar
EventBus
Sistema de eventos desacoplados. Útil para comunicação entre apps sem importação direta.
Publicar evento
// Em qualquer view ou service:
fw.Events.Publish("usuario.criado", map[string]any{
"id": usuario.ID,
"email": usuario.Email,
})
Assinar evento
// No init() do app ou no Register():
func init() {
// fw deve ser acessível aqui (via variável de pacote ou injeção)
fw.Events.Subscribe("usuario.criado", func(payload any) {
dados := payload.(map[string]any)
email := dados["email"].(string)
enviarEmailBoasVindas(email)
})
}
Cancelar assinatura
fw.Events.Unsubscribe("usuario.criado")
Handlers do EventBus rodam em goroutines separadas. Use sincronização se necessário.
EventBus vs Queue
EventBus é pub/sub fire-and-forget: todos os subscribers recebem, sem retry, sem garantia de processamento. Para trabalho que não pode se perder num pico (e-mails, webhooks, processamento de mídia), com retry automático e um worker por tarefa, veja Fila (Queue).