...
Code Block | ||||
---|---|---|---|---|
| ||||
/**
* {@code DslStoreSuppliers} defines a grouping of factories to construct
* stores for each of the types of state store implementations in Kafka
* Streams. This allows configuration of a default store supplier beyond
* the builtin defaults of RocksDB and In-Memory.
*
* <p>There are various ways that this configuration can be supplied to
* the application (in order of precedence):
* <ol>
* <li>Passed in directly to a DSL operator via either
* {@link org.apache.kafka.streams.kstream.Materialized#as(DslStoreSuppliers)},
* {@link org.apache.kafka.streams.kstream.Materialized#withStoreType(DslStoreSuppliers)}, or
* {@link org.apache.kafka.streams.kstream.StreamJoined#withDslStoreSuppliers(DslStoreSuppliers)}</li>
*
* <li>Passed in via a Topology configuration override (configured in a
* {@link org.apache.kafka.streams.TopologyConfig} and passed into the
* {@link org.apache.kafka.streams.StreamsBuilder#StreamsBuilder(TopologyConfig)} constructor</li>
*
* <li>Configured as a global default in {@link org.apache.kafka.streams.StreamsConfig} using
* the {@link org.apache.kafka.streams.StreamsConfig#DSL_STORE_SUPPLIERS_CLASS_CONFIG}</li>
* configuration.
* </ol>
*
* <p>Kafka Streams is packaged with some pre-existing {@code DslStoreSuppliers}
* that exist in {@link BuiltInDslStoreSuppliers}
*/
public interface DslStoreSuppliers extends Configurable {
KeyValueBytesStoreSupplier keyValueStore(final DslKeyValueParams params);
WindowBytesStoreSupplier windowStore(final DslWindowParams params);
SessionBytesStoreSupplier sessionStore(final DslSessionParams params);
}
// the below are all "struct"-like classes with the following fields
class DslKeyValueParams(String name);
class DslWindowParams(String name, Duration retentionPeriod, Duration windowSize, boolean retainDuplicates, EmitStrategy emitStrategy, boolean isSlidingWindow, boolean isTimestamped);
class DslSessionParams(String name, Duration retentionPeriod, EmitStrategy emitStrategy); |
...