Skip to content

Events

type OrderPlaced struct{ ID string }
func (m *Mailer) Events(r *events.Registry) {
events.On(r, m.onPlaced) // func(ctx, OrderPlaced) error
events.On(r, m.audit, events.Async()) // in a goroutine; shutdown waits for it
}
err := emitter.Emit(ctx, OrderPlaced{ID: id}) // inject *events.Emitter

Listeners subscribe by Go type; a listener of an interface type gets every event that implements it. Emit returns the errors of synchronous listeners; async errors go to events.OnError.