Events

Functions

Public API reference for the Events extension

Extension Entry Points

FunctionDescription
NewExtension(opts ...ConfigOption) forge.ExtensionCreate the events extension with functional options
NewExtensionWithConfig(config Config) forge.ExtensionCreate the events extension with a complete config
DefaultConfig() ConfigReturns the default configuration

DI Helpers

FunctionDescription
GetEventService(c forge.Container) (*EventService, error)Resolve the event service
MustGetEventService(c forge.Container) *EventServiceSame but panics on error
GetEventBus(c forge.Container) (core.EventBus, error)Resolve the event bus
MustGetEventBus(c forge.Container) core.EventBusSame but panics on error
GetEventStore(c forge.Container) (core.EventStore, error)Resolve the event store
MustGetEventStore(c forge.Container) core.EventStoreSame but panics on error
GetHandlerRegistry(c forge.Container) (*core.HandlerRegistry, error)Resolve the handler registry
MustGetHandlerRegistry(c forge.Container) *core.HandlerRegistrySame but panics on error
GetEventServiceFromApp(app forge.App) (*EventService, error)Resolve the event service from an app
MustGetEventServiceFromApp(app forge.App) *EventServiceSame but panics on error

Event Construction

FunctionDescription
core.NewEvent(eventType, aggregateID, data) *EventCreate a new domain event
event.WithVersion(v)Set event version
event.WithSource(s)Set event source
event.WithCorrelationID(id)Set correlation ID for tracing
event.WithCausationID(id)Set causation ID for event chains
event.WithMetadata(key, value)Attach metadata

EventBus Interface

MethodDescription
Publish(ctx, event) errorPublish an event to the default broker
PublishTo(ctx, brokerName, event) errorPublish to a specific named broker
Subscribe(eventType, handler) errorSubscribe a handler to an event type
Unsubscribe(eventType, handlerName) errorRemove a handler subscription
RegisterBroker(name, broker) errorRegister a new message broker at runtime
UnregisterBroker(name) errorRemove a message broker
GetBroker(name) (MessageBroker, error)Get a registered broker by name
SetDefaultBroker(name) errorChange the default broker
GetStats() map[string]anyGet bus statistics

EventStore Interface

MethodDescription
SaveEvent(ctx, event) errorPersist a single event
SaveEvents(ctx, events) errorPersist multiple events
GetEvent(ctx, id) (*Event, error)Retrieve an event by ID
GetEvents(ctx, criteria) ([]*Event, error)Query events by criteria
GetEventsByAggregate(ctx, aggregateID) ([]*Event, error)Get all events for an aggregate
GetEventsByType(ctx, eventType) ([]*Event, error)Get all events of a type
GetEventsSince(ctx, timestamp) ([]*Event, error)Get events after a timestamp
GetEventsInRange(ctx, start, end) ([]*Event, error)Get events in a time range
CreateSnapshot(ctx, snapshot) errorCreate an aggregate snapshot
GetSnapshot(ctx, aggregateID) (*Snapshot, error)Retrieve the latest snapshot

Handler Registration

FunctionDescription
NewTypedEventHandler(name, eventTypes, handler) *TypedEventHandlerCreate a handler for specific event types
NewDomainEventHandler(name, aggregateType, eventTypes, handler) *DomainEventHandlerCreate a handler for domain events by aggregate
NewReflectionEventHandler(name, target) *ReflectionEventHandlerCreate a handler from a struct's methods via reflection
NewRetryPolicy(maxRetries, initialDelay) *RetryPolicyCreate a retry policy for handler failures
NewHandlerRegistry(logger, metrics) *HandlerRegistryCreate a handler registry (typically done by extension)

Built-in Middleware

FunctionDescription
LoggingMiddleware(logger) HandlerMiddlewareLog event handling with timing
MetricsMiddleware(metrics) HandlerMiddlewareEmit handler execution metrics
ValidationMiddleware() HandlerMiddlewareValidate events before handling

Event Filters

FunctionDescription
core.TypeFilter(eventTypes...) EventFilterFilter events by type
core.AggregateFilter(aggregateIDs...) EventFilterFilter events by aggregate ID
core.SourceFilter(sources...) EventFilterFilter events by source
core.CombineFilters(filters...) EventFilterCombine multiple filters with AND logic

How is this guide?

On this page