事件总线
ling-base common/eventbus 模块文档
在线 Playground
在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。
eventbus
Lightweight in-process event bus with wildcard topic matching, middleware support, and observability metrics.
Features
- Dispatch modes: Sync (default), Async (background workers), Parallel (concurrent)
- Wildcard topic matching:
user.*(single level),user.>(multi level) - Middleware: logging, recover, retry with backoff, dead-letter, per-topic metrics
- Built-in metrics: published, delivered, failed, pending, average latency
Key types
Event-- message withID,Name,Time,Payload,Headers,AttemptHandler--func(ctx, *Event) errorMiddleware--func(next Handler) HandlerBus-- core interface (Publish, Subscribe, Unsubscribe, Close, Metrics)Subscription-- active subscription handleMetrics/MetricsCollector-- observability snapshotDispatchMode--Sync,Async,Parallel
Key functions
NewBus(opts...)-- create an in-memory busNew(name, payload)/NewWithSource(name, source, payload)-- create eventsWithDispatchMode,WithMiddleware,WithAsyncBufferSize-- bus optionsLoggingMiddleware,RecoverMiddleware,RetryMiddleware,DeadLetterMiddleware,MetricsMiddlewareTopicMatches(pattern, name)-- wildcard match helper
Quick start
import (
"context"
"github.com/LingByte/ling-base/common/eventbus"
)
bus := eventbus.NewBus()
defer bus.Close()
bus.Subscribe("user.created", func(ctx context.Context, e *eventbus.Event) error {
log.Printf("user created: %v", e.Payload)
return nil
})
_ = bus.Publish(ctx, eventbus.New("user.created", "user-123"))License
MIT