Damian Guy created KAFKA-5650: --------------------------------- Summary: Provide a simple way for custom storage engines to use streams wrapped stores (KIP-182) Key: KAFKA-5650 URL: https://issues.apache.org/jira/browse/KAFKA-5650 Project: Kafka Issue Type: Bug Reporter: Damian Guy Assignee: Damian Guy
As per KIP-182: A new interface will be added: {code} /** * Implementations of this will provide the ability to wrap a given StateStore * with or without caching/loggging etc. */ public interface StateStoreBuilder<T extends StateStore> { StateStoreBuilder<T> withCachingEnabled(); StateStoreBuilder<T> withCachingDisabled(); StateStoreBuilder<T> withLoggingEnabled(Map<String, String> config); StateStoreBuilder<T> withLoggingDisabled(); T build(); } {code} This interface will be used to wrap stores with caching, logging etc. Additionally some convenience methods on the {{Stores}} class: {code} public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> persistentKeyValueStore(final String name, final Serde<K> keySerde, final Serde<V> valueSerde) public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> inMemoryKeyValueStore(final String name, final Serde<K> keySerde, final Serde<V> valueSerde) public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> lruMap(final String name, final int capacity, final Serde<K> keySerde, final Serde<V> valueSerde) public static <K, V> StateStoreSupplier<WindowStore<K, V>> persistentWindowStore(final String name, final Windows windows, final Serde<K> keySerde, final Serde<V> valueSerde) public static <K, V> StateStoreSupplier<SessionStore<K, V>> persistentSessionStore(final String name, final SessionWindows windows, final Serde<K> keySerde, final Serde<V> valueSerde) /** * The following methods are for use with the PAPI. They allow building of StateStores that can be wrapped with * caching, logging, and any other convenient wrappers provided by the KafkaStreams library */ public <K, V> StateStoreBuilder<WindowStore<K, V>> windowStoreBuilder(final StateStoreSupplier<WindowStore<K, V>> supplier) public <K, V> StateStoreBuilder<KeyValueStore<K, V>> keyValueStoreBuilder(final StateStoreSupplier<KeyValueStore<K, V>> supplier) public <K, V> StateStoreBuilder<SessionStore<K, V>> sessionStoreBuilder(final StateStoreSupplier<SessionStore<K, V>> supplier) {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)