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:23:00 UTC

[jira] [Updated] (KAFKA-5650) Provide a simple way for custom storage engines to use streams wrapped stores (KIP-182)

     [ https://issues.apache.org/jira/browse/KAFKA-5650?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Damian Guy updated KAFKA-5650:
------------------------------
    Issue Type: Sub-task  (was: Bug)
        Parent: KAFKA-5651

> 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: Sub-task
>            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)