The Progress® OpenEdge® messaging system provides a generic way, through deserialization, to convert data from a stream of bytes received by the consumer to a format that can be used by the application. You choose a deserializer for each type of data to be received. Deserialization can be configured at the application level and/or topic level. OpenEdge provides default, in-the-box, deserializers for common data types, each of which provides convenient default behavior. You may also create your own deserializer implementations.

The deserializers provided by OpenEdge are described in the table.

Deserializer Strongly-typed method name Description
OpenEdge.Messaging.StringDeserializer StringDeserializer() Use for simple string-based text. Converts bytes to strings and uses UTF-8 character encoding.
OpenEdge.Messaging.MemptrDeserializer MemptrDeserializer() Pass-thru deserializer. Performs no conversion on the record byte data: only returns the data as-is.
OpenEdge.Messaging.JsonDeserializer JsonDeserializer() Converts the record byte data to a JSON object.

For an Apache® Kafka® consumer, two deserializers are typically specified - one for the message body (required) and one for the partition key (optional). When a partition key deserializer is not specified, the consumer defaults to using an instance of OpenEdge.Messaging.MemptrDeserializer.

The following example code sets the deserializers for the message body and the partition key using strongly-typed methods:
cb:SetBodyDeserializer(new StringDeserializer()).  // message body
cb:SetKeyDeserializer(new StringDeserializer()).  // partition key
The following example code sets the deserializers using Kafka property name-value pairs:
cb:SetConsumerOption("value.deserializer", "OpenEdge.Messaging.StringDeserializer").
cb:SetConsumerOption("key.deserializer", "OpenEdge.Messaging.StringDeserializer").