Forge
1.x
Docs/Forge/Functions
Open

Reading2 min
Updated31 Jul 2026
Sourcev1/extensions/events/functions.mdx

Extension Entry Points01

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 Helpers02

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 Construction03

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 Interface04

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 Interface05

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 Registration06

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 Middleware07

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

Event Filters08

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