Implementing Custom States
Currently the only kind of State implementation supported is
KeyValueState
, which provides key-value mapping.
Custom state implementations should provide implementations for the methods
defined in the State
interface. These are the void
prepareCommit(long txid)
, void commit(long txid)
, and
rollback()
methods. The commit()
method is optional;
it is useful if the bolt manages state on its own. This is currently used only by
internal system bolts (such as CheckpointSpout
).
KeyValueState
implementations should also implement the methods
defined in the KeyValueState
interface.
The framework instantiates state through the corresponding
StateProvider
implementation. A custom state should also provide a
StateProvider
implementation that can load and return the state
based on the namespace.
Each state belongs to a unique namespace. The namespace is typically unique to a
task, so that each task can have its own state. The StateProvider and corresponding
State implementation should be available in the class path of Storm, by placing them
in the extlib
directory.