Storing and Retrieving State
State is stored using the StateManager's getState
,
setState
, replace
, and clear
methods. All of these methods require that a Scope be provided. It should be noted that
the state that is stored with the Local scope is entirely different than state stored
with a Cluster scope. If a Processor stores a value with the key of My
Key using the Scope.CLUSTER
scope, and then attempts to
retrieve the value using the Scope.LOCAL
scope, the value retrieved
will be null
(unless a value was also stored with the same key using
the Scope.CLUSTER
scope). Each Processor's state, is stored in
isolation from other Processors' state.
It follows, then, that two Processors cannot share the same state. There are, however, some circumstances in which it is very necessary to share state between two Processors of different types, or two Processors of the same type. This can be accomplished by using a Controller Service. By storing and retrieving state from a Controller Service, multiple Processors can use the same Controller Service and the state can be exposed via the Controller Service's API.