Quickstart
Requirements
Go 1.23 or later.
Installation
go get github.com/zoobz-io/capitan
Basic Usage
package main
import (
"context"
"fmt"
"github.com/zoobz-io/capitan"
)
// Define signals as package-level variables
var orderCreated = capitan.NewSignal("order.created", "New order placed")
// Define keys as package-level variables
var orderID = capitan.NewStringKey("order_id")
func main() {
// Hook a listener
capitan.Hook(orderCreated, func(ctx context.Context, e *capitan.Event) {
id, ok := orderID.From(e)
if !ok {
return
}
fmt.Printf("Order received: %s\n", id)
})
// Emit an event
capitan.Emit(context.Background(), orderCreated, orderID.Field("ORDER-123"))
// Drain pending events before exit
capitan.Shutdown()
}
What's Happening
NewSignalcreates an event type identifierNewStringKeycreates a typed key for string fieldsHookregisters a listener for a specific signalEmitqueues an event for async processingShutdownwaits for all pending events to process