Package-level declarations

Types

Link copied to clipboard
fun interface Sink

Where a context's committed state events go: the Kafka Sink's topics, a warehouse's tables. The runtime's sink subscription reads the log, builds the StateEventRecords and hands them to write; it owns the semantics around the write (checkpoints, retries, parking), so a sink only writes.

Link copied to clipboard
class SinkConfig @InternalWowApi constructor(val name: String, val type: String, val options: Map<String, String> = emptyMap(), val resources: StoreResources = StoreResources.NONE, val streams: Set<AggregateType>? = null, val store: Store? = null)

What a SinkProvider opens its sinks from: their name and type, their own settings (options, each key relative to the sink's configuration, endpoint say), and the application's resources.

Link copied to clipboard

A Sink of the streams a service publishes: what opens the Sinks of one destination, a warehouse's tables say. Wow's ClickHouse Sink (clickhouse) is a provider as a community one is: the host finds them on the classpath (ServiceLoader, from the module's META-INF/services/me.ahoo.wow.spi.sink.SinkProvider) and among the application's beans, a bean taking the place of a provider of its type on the classpath, as it finds a me.ahoo.wow.spi.store.StoreProvider, and runs one sink subscription per published stream over what it opens.

Link copied to clipboard

The sinks of one destination, one per published stream: the subscription that writes the stream of aggregate in context is named <processor>.<aggregate> and writes through sinkOf. close closes what they share, after the node has stopped.