public interface StateStore
If the store is implemented as a persistent store, it must use the store name as directory name and write
all data into this store directory.
The store directory must be created with the state directory.
The state directory can be obtained via
#stateDir() using the
ProcessorContext provided via
Using nested store directories within the state directory isolates different state stores. If a state store would write into the state directory directly, it might conflict with others state stores and thus, data might get corrupted and/or Streams might fail with an error. Furthermore, Kafka Streams relies on using the store name as store directory name to perform internal cleanup tasks.
This interface does not specify any query capabilities, which, of course, would be query engine specific. Instead it just specifies the minimum functionality required to reload a storage engine from its changelog as well as basic lifecycle management.
|Modifier and Type||Method and Description|
Close the storage engine.
Flush any cached data
Initializes this state store.
Is this store open for reading and writing
The name of this store.
Return if the storage is persistent or not.
void init(ProcessorContext context, StateStore root)
The implementation of this function must register the root store in the context via the
ProcessorContext.register(StateStore, StateRestoreCallback) function, where the
StateStore parameter should always be the passed-in
root object, and
the second parameter should be an object of user's implementation
StateRestoreCallback interface used for restoring the state store from the changelog.
Note that if the state store engine itself supports bulk writes, users can implement another
BatchingStateRestoreCallback which extends
let users implement bulk-load restoration logic instead of restoring one record at a time.
java.lang.IllegalStateException- If store gets registered after initialized is already finished
StreamsException- if the store's change log does not contain the partition
Users only need to implement this function but should NEVER need to call this api explicitly as it will be called by the library automatically when necessary
trueif the storage is persistent—
trueif the store is open