Skip to content

Laisky/go-eventengine

Repository files navigation

go-eventengine

License: MIT Commitizen friendly Go Report Card GoDoc Build Status codecov

simple event driven tools

Example

package main

import (
	"context"

	eventengine "github.com/Laisky/go-eventengine"
	"github.com/Laisky/go-eventengine/types"
	gutils "github.com/Laisky/go-utils"
	"github.com/Laisky/zap"
)

var closed = make(chan struct{})

func handler(evt *types.Event) error {
	gutils.Logger.Info("handler", zap.Any("event", evt))
	closed <- struct{}{}
	return nil
}

func main() {
	ctx := context.Background()

	engine, err := eventengine.New(ctx)
	if err != nil {
		gutils.Logger.Panic("new engine", zap.Error(err))
	}

	var topic types.EventTopic = "hello"

	// register handler to topic
	engine.Register(topic, handler)

	// trigger event
	engine.Publish(ctx, &types.Event{Topic: topic})

	// wait for handler to be called
	<-closed
}

About

simple event driven tools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published