@EnableBinding(value=org.springframework.cloud.stream.messaging.Source.class)
@Import(value={GemfireClientCacheConfiguration.class,GemfirePoolConfiguration.class})
@EnableConfigurationProperties(value=GemfireCqSourceProperties.class)
@PropertySource(value="gemfire-cq-source.properties")
public class GemfireCqSourceConfiguration
extends Object
The Gemfire CQ Source provides a ContinuousQueryMessageProducer
which
by default, emits an object of type CqEvent
.
This is not ideal for streaming applications because it require this type to
be also in the consuming app's classpath. Hence, a SpEl Expression, given by the
property 'qcEventExpression' is used to extract required information from the
payload. The default expression is 'newValue' which returns the updated object. This
may not be ideal for every use case especially if it does not provide the key
value. The key is referenced by the field 'key'. Also available are the
operations associated with the event, and the query. If the cached key and value
types are primitives, an simple expression like "key + ':' + newValue" may work.
More complex transformations, such as Json, will require customization. To access
the original object, set 'cacheEntryExpression' to '#root' or "#this'.
This converts payloads of type PdxInstance
, which Gemfire uses to store
JSON content (the type of newValue for instance), to a JSON String.
- Author:
- David Turanski