Categorygithub.com/dev-mockingbird/events
repositorypackage
0.2.0-dev
Repository: https://github.com/dev-mockingbird/events.git
Documentation: pkg.go.dev

# README

events

An event system abstraction


q := events.KafkaQueue(KafkaTopic("hello"))

logger := logf.New()

ctx := context.Background()

done := make(chan struct{})

go func() {
    listener := events.GetListener("hello-world", q, Logger(logger))
    listener.Listen(ctx, events.Handle(func(ctx context.Context, e *events.Event) error {
        var payload struct {
            Name string
        }
        if err := e.UnpackPayload(&payload); err != nil {
            return err
        }
        logger.Logf(logger.InfoLevel, "received event: %#v", e)
        logger.Logf(logger.InfoLevel, "received event payload: %#v", payload)
        listener.Stop()
        done <- struct{}{}
        return nil
    }))
}()

q.Add(ctx, events.New("test", Json(struct{Name string}{Name: "hello"})))

<- done

q := events.KafkaQueue(KafkaTopic("hello"))

el := events.EmitListener{Q: q, Name: "hello-world"}

done := make(chan struct{})

el.Listener().Listen(ctx, events.Handler(func(ctx contxt.Context, q *events.Event) error {
    done <- struct{}{}
    return nil
}))


el.Emitter().Emit(context.Background(), events.Get("hello-world", Json(struct{Name string}{Name: "hello"})))

<- done