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.