Idiomatic API for working with Chronicle event store subscriptions.
Event store subscriptions let one event store subscribe to events emitted from
another event store's outbox. They can be registered imperatively, or declared
as discoverable modules with use Chronicle.EventStoreSubscriptions.Subscription
and auto-registered by Chronicle.Client.
Discoverable subscriptions
defmodule MyApp.EventStoreSubscriptions.DefaultAccountEvents do
use Chronicle.EventStoreSubscriptions.Subscription,
source_event_store: "default"
alias Chronicle.EventStoreSubscriptions.DefinitionBuilder
@impl true
def define(builder) do
builder
|> DefinitionBuilder.with_event_type(MyApp.Events.AccountOpened)
|> DefinitionBuilder.with_event_type(MyApp.Events.FundsDeposited)
end
endImperative registration
:ok =
Chronicle.EventStoreSubscriptions.subscribe(
"account-events-from-default",
"default",
fn builder ->
builder
|> Chronicle.EventStoreSubscriptions.DefinitionBuilder.with_event_type(
MyApp.Events.AccountOpened
)
end
)Options
:client— the client name (default:Chronicle.Client):namespace— accepted for consistency with other APIs and ignored here
Summary
Functions
Discovers event store subscription definitions from the configured client or loaded modules.
Registers a single discoverable event store subscription module.
Registers all discoverable event store subscriptions.
Registers an event store subscription imperatively using all available event types.
Registers an event store subscription imperatively.
Removes an event store subscription by identifier.
Functions
@spec discover(keyword()) :: [Chronicle.EventStoreSubscriptions.Definition.t()]
Discovers event store subscription definitions from the configured client or loaded modules.
Registers a single discoverable event store subscription module.
Registers all discoverable event store subscriptions.
Registers an event store subscription imperatively using all available event types.
@spec subscribe( String.t(), String.t(), (Chronicle.EventStoreSubscriptions.DefinitionBuilder.t() -> Chronicle.EventStoreSubscriptions.DefinitionBuilder.t()), keyword() ) :: :ok | {:error, term()}
Registers an event store subscription imperatively.
Removes an event store subscription by identifier.