K - type of record keyV - type of record valueS - 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
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"));
Stores| Modifier and Type | Field and Description |
|---|---|
protected boolean |
cachingEnabled |
protected org.apache.kafka.common.serialization.Serde<K> |
keySerde |
protected boolean |
loggingEnabled |
protected java.lang.String |
storeName |
protected StoreSupplier<S> |
storeSupplier |
protected java.util.Map<java.lang.String,java.lang.String> |
topicConfig |
protected org.apache.kafka.common.serialization.Serde<V> |
valueSerde |
| Modifier | Constructor and Description |
|---|---|
protected |
Materialized(Materialized<K,V,S> materialized)
Copy constructor.
|
| Modifier and Type | Method and Description |
|---|---|
static <K,V> Materialized<K,V,KeyValueStore<org.apache.kafka.common.utils.Bytes,byte[]>> |
as(KeyValueBytesStoreSupplier supplier)
Materialize a
KeyValueStore using the provided KeyValueBytesStoreSupplier. |
static <K,V> Materialized<K,V,SessionStore<org.apache.kafka.common.utils.Bytes,byte[]>> |
as(SessionBytesStoreSupplier supplier)
Materialize a
SessionStore using the provided SessionBytesStoreSupplier. |
static <K,V,S extends StateStore> |
as(java.lang.String storeName)
Materialize a
StateStore with the given name. |
static <K,V> Materialized<K,V,WindowStore<org.apache.kafka.common.utils.Bytes,byte[]>> |
as(WindowBytesStoreSupplier supplier)
Materialize a
WindowStore using the provided WindowBytesStoreSupplier. |
static <K,V,S extends StateStore> |
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. |
Materialized<K,V,S> |
withCachingDisabled()
Disable caching for the materialized
StateStore. |
Materialized<K,V,S> |
withCachingEnabled()
Enable caching for the materialized
StateStore. |
Materialized<K,V,S> |
withKeySerde(org.apache.kafka.common.serialization.Serde<K> keySerde)
Set the keySerde the materialize
StateStore will use. |
Materialized<K,V,S> |
withLoggingDisabled()
Disable change logging for the materialized
StateStore. |
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.
|
Materialized<K,V,S> |
withValueSerde(org.apache.kafka.common.serialization.Serde<V> valueSerde)
Set the valueSerde the materialized
StateStore will use. |
protected StoreSupplier<S extends StateStore> storeSupplier
protected java.lang.String storeName
protected org.apache.kafka.common.serialization.Serde<V> valueSerde
protected org.apache.kafka.common.serialization.Serde<K> keySerde
protected boolean loggingEnabled
protected boolean cachingEnabled
protected java.util.Map<java.lang.String,java.lang.String> topicConfig
protected Materialized(Materialized<K,V,S> materialized)
materialized - the Materialized instance to copy.public static <K,V,S extends StateStore> Materialized<K,V,S> as(java.lang.String storeName)
StateStore with the given name.K - key type of the storeV - value type of the storeS - type of the StateStorestoreName - the name of the underlying KTable state store; valid characters are ASCII
alphanumerics, '.', '_' and '-'.Materialized instance with the given storeNamepublic static <K,V> Materialized<K,V,WindowStore<org.apache.kafka.common.utils.Bytes,byte[]>> as(WindowBytesStoreSupplier supplier)
WindowStore using the provided WindowBytesStoreSupplier.K - key type of the storeV - value type of the storesupplier - the WindowBytesStoreSupplier used to materialize the storeMaterialized instance with the given supplierpublic static <K,V> Materialized<K,V,SessionStore<org.apache.kafka.common.utils.Bytes,byte[]>> as(SessionBytesStoreSupplier supplier)
SessionStore using the provided SessionBytesStoreSupplier.K - key type of the storeV - value type of the storesupplier - the SessionBytesStoreSupplier used to materialize the storeMaterialized instance with the given sup
plierpublic static <K,V> Materialized<K,V,KeyValueStore<org.apache.kafka.common.utils.Bytes,byte[]>> as(KeyValueBytesStoreSupplier supplier)
KeyValueStore using the provided KeyValueBytesStoreSupplier.K - key type of the storeV - value type of the storesupplier - the KeyValueBytesStoreSupplier used to materialize the storeMaterialized instance with the given supplierpublic static <K,V,S extends StateStore> Materialized<K,V,S> with(org.apache.kafka.common.serialization.Serde<K> keySerde, org.apache.kafka.common.serialization.Serde<V> valueSerde)
StateStore with the provided key and value Serdes.
An internal name will be used for the store.K - key typeV - value typeS - store typekeySerde - the key Serde to use. If the Serde is null, then the default key
serde from configs will be usedvalueSerde - the value Serde to use. If the Serde is null, then the default value
serde from configs will be usedMaterialized instance with the given key and value serdespublic Materialized<K,V,S> withValueSerde(org.apache.kafka.common.serialization.Serde<V> valueSerde)
StateStore will use.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 operationpublic Materialized<K,V,S> withKeySerde(org.apache.kafka.common.serialization.Serde<K> keySerde)
StateStore will use.keySerde - the key Serde to use. If the Serde is null, then the default key
serde from configs will be usedpublic Materialized<K,V,S> withLoggingEnabled(java.util.Map<java.lang.String,java.lang.String> config)
Note: Any unrecognized configs will be ignored.
config - any configs that should be applied to the changelogpublic Materialized<K,V,S> withLoggingDisabled()
StateStore.public Materialized<K,V,S> withCachingEnabled()
StateStore.public Materialized<K,V,S> withCachingDisabled()
StateStore.