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.