Skip to content

Message deserialization

Artem Utkin edited this page May 28, 2023 · 1 revision

Message deserialization

When configuring options for your consumer group (Program.cs) you must specify the message deserializer.

Default JSON deserialization:

The library provides you with default JSON deserializer:

services.AddKafkaEventLoop(ctx.Configuration, o => o
    .HasConsumerGroup("<group-1>", cgOptions => cgOptions
        .HasMessageType<MyMessage>()
        .HasJsonMessageDeserializer() // <-- json deserializer
        .HasController<MyController>()
        .Build())
    .Build());

Custom deserialization:

If your messages are in different format, you should provide your custom deserializer:

public class MyCustomDeserializer : IDeserializer<MyMessage?>
{
    public MyMessage? Deserialize(
        ReadOnlySpan<byte> data,
        bool isNull,
        SerializationContext context)
    {
        // build message instance from the byte data
    }
}

and register it in the consumer group options:

services.AddKafkaEventLoop(ctx.Configuration, o => o
    .HasConsumerGroup("<group-1>", cgOptions => cgOptions
        .HasMessageType<MyMessage>()
        .HasCustomMessageDeserializer<MyCustomDeserializer>() // <-- custom deserializer
        .HasController<MyController>()
        .Build())
    .Build());
Clone this wiki locally