You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Damian Guy (JIRA)" <ji...@apache.org> on 2017/07/26 15:19:00 UTC
[jira] [Created] (KAFKA-5650) Provide a simple way for custom
storage engines to use streams wrapped stores (KIP-182)
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)