Class Materialized<K,​V,​S extends StateStore>

  • Type Parameters:
    K - type of record key
    V - type of record value
    S - type of state store (note: state stores always have key/value types <Bytes,byte[]>

    public class Materialized<K,​V,​S extends StateStore>
    extends java.lang.Object
    Used to describe how a StateStore should be materialized. You can either provide a custom StateStore backend through one of the provided methods accepting a supplier or use the default RocksDB backends by providing just a store name.

    For example, you can read a topic as KTable and force a state store materialization to access the content via Interactive Queries API:

    
     StreamsBuilder builder = new StreamsBuilder();
     KTable<Integer, Integer> table = builder.table(
       "topicName",
       Materialized.as("queryable-store-name"));
     
    See Also:
    Stores
    • Field Detail

      • storeName

        protected java.lang.String storeName
      • valueSerde

        protected org.apache.kafka.common.serialization.Serde<V> valueSerde
      • keySerde

        protected org.apache.kafka.common.serialization.Serde<K> keySerde
      • loggingEnabled

        protected boolean loggingEnabled
      • cachingEnabled

        protected boolean cachingEnabled
      • topicConfig

        protected java.util.Map<java.lang.String,​java.lang.String> topicConfig
    • Constructor Detail

      • Materialized

        protected Materialized​(Materialized<K,​V,​S> materialized)
        Copy constructor.
        Parameters:
        materialized - the Materialized instance to copy.
    • Method Detail

      • as

        public static <K,​V,​S extends StateStoreMaterialized<K,​V,​S> as​(java.lang.String storeName)
        Materialize a StateStore with the given name.
        Type Parameters:
        K - key type of the store
        V - value type of the store
        S - type of the StateStore
        Parameters:
        storeName - the name of the underlying KTable state store; valid characters are ASCII alphanumerics, '.', '_' and '-'.
        Returns:
        a new Materialized instance with the given storeName
      • with

        public static <K,​V,​S extends StateStoreMaterialized<K,​V,​S> with​(org.apache.kafka.common.serialization.Serde<K> keySerde,
                                                                                                  org.apache.kafka.common.serialization.Serde<V> valueSerde)
        Materialize a StateStore with the provided key and value Serdes. An internal name will be used for the store.
        Type Parameters:
        K - key type
        V - value type
        S - store type
        Parameters:
        keySerde - the key Serde to use. If the Serde is null, then the default key serde from configs will be used
        valueSerde - the value Serde to use. If the Serde is null, then the default value serde from configs will be used
        Returns:
        a new Materialized instance with the given key and value serdes
      • withValueSerde

        public Materialized<K,​V,​S> withValueSerde​(org.apache.kafka.common.serialization.Serde<V> valueSerde)
        Set the valueSerde the materialized StateStore will use.
        Parameters:
        valueSerde - the value Serde to use. If the Serde is null, then the default value serde from configs will be used. If the serialized bytes is null for put operations, it is treated as delete operation
        Returns:
        itself
      • withKeySerde

        public Materialized<K,​V,​S> withKeySerde​(org.apache.kafka.common.serialization.Serde<K> keySerde)
        Set the keySerde the materialize StateStore will use.
        Parameters:
        keySerde - the key Serde to use. If the Serde is null, then the default key serde from configs will be used
        Returns:
        itself
      • withLoggingEnabled

        public Materialized<K,​V,​S> withLoggingEnabled​(java.util.Map<java.lang.String,​java.lang.String> config)
        Indicates that a changelog should be created for the store. The changelog will be created with the provided configs.

        Note: Any unrecognized configs will be ignored.

        Parameters:
        config - any configs that should be applied to the changelog
        Returns:
        itself
      • withLoggingDisabled

        public Materialized<K,​V,​S> withLoggingDisabled()
        Disable change logging for the materialized StateStore.
        Returns:
        itself
      • withCachingEnabled

        public Materialized<K,​V,​S> withCachingEnabled()
        Enable caching for the materialized StateStore.
        Returns:
        itself
      • withCachingDisabled

        public Materialized<K,​V,​S> withCachingDisabled()
        Disable caching for the materialized StateStore.
        Returns:
        itself