Message Interface
Datalake is an accelerator specific to power utilities. When enabled, it can be accessed via the menu button ( ) in the top-left corner of the Utilihive Console. |
Utilihive Datalake uses CloudEvents as a common message format and as an envelope for data payloads. Formally, we operate with the concept of a CloudEvents message as a "data mutation event".
Messages may be of any type and may or may not encode payload data.
By default, all messages are accepted and their context attributes are inserted into the messageHistory
table, serving as an index over all received data.
Messages may also be stored on object store to enable reingestion and event sourcing for reconstructing state.
Payload Types
For messages of a certain type
, the payload is also inserted into domain-specific tables through payload handlers.
Payload handlers can be registered dynamically (using reflection) or through configuration and implement a functional interface to normalize and insert payload data.
Standard payload types use a simple name for the CloudEvents type
field, such as DataPointSeries
.
Non-standard payload types that implement their own payload handler resolved through reflection must use the fully qualified class name for type
, for example com.greenbird.metercloud.industry.energy.meterreadings.dto.MeterReadings
.
CloudEvents Extensions
All extension properties are deserialized into a hashmap and stored in DB.
Dataref Extension
The current Message
implementation includes the dataref
standard extension as means of passing data by reference.
The data payload is resolved from dataref
by the common service layer upon receiving the message, currently limited to fetching objects from object store.