Skip to main content

Overview

This guide will help you install, configure and use your custom Kafka deserializer with Console which will present serialized messages in a human readable way.

Prerequisites

Your custom deserializer is available and you know how to configure it. Check out some examples of Kafka deserializer implementations

Install custom deserializer

Console looks for jars present in folder /opt/conduktor/plugins during startup. There are different ways of making your custom deserializers available in Console.
conduktor-console:
  image: conduktor/conduktor-console
  ports:
    - '8080:8080'
  volumes:
    - /local/my_custom_deserializers_2.13-2.0.0.jar:/opt/conduktor/plugins/my_custom_deserializers_2.13-2.0.0.jar

Check installation status

If everything went well, you should see this on the Console startup:
Loading plugin my_custom_deserializers_2.13-2.0.0 from jar: /opt/conduktor/plugins/my_custom_deserializers_2.13-2.0.0.jar
Register custom Kafka Deserializer: class io.example.conduktor.custom.deserializers.MyCustomDeserializer
Register custom Kafka Deserializer: class io.example.conduktor.custom.deserializers.MyCustomProtobufDeserializer
...

Configure custom deserializer and consume data

From the Consume page, open the Value Format filter and pick your Custom Deserializer from the list.
Properties example
apicurio.registry.url=https://test.serviceregistry.rhcloud.com/t/d4d411af-xxxx-4184-xxxx-342e6cd03580/apis/registry/v2
apicurio.auth.username=srvc-acct-a95c41e8-xxxx-4e99-xxxx-217755ad7046
apicurio.auth.password=7d94b05a-xxxx-4f70-xxxx-1e6aba25a8b4

Supported use cases

AWS Glue Schema Registry

AWS Glue uses a proprietary wire format that differs from Confluent’s schema registry protocol. To consume Glue-encoded messages, implement a deserializer that uses the AWS Glue Schema Registry library and configure it with your Glue registry ARN and AWS credentials via the properties field.

Apicurio Registry

Apicurio Registry uses a compatible wire format but requires its own client library. Point the deserializer at your Apicurio endpoint using the apicurio.registry.url property as shown above.

Other proprietary formats

Any format that can be decoded by a Java class implementing org.apache.kafka.common.serialization.Deserializer<T> works with Console. This includes internal binary formats, custom protobuf variants, or legacy serialization schemes.

Troubleshooting

Deserializer not listed in the UI — Check Console startup logs for Register custom Kafka Deserializer entries. If missing, verify the JAR path and that the class implements Deserializer<T>. ClassNotFoundException at runtime — Your deserializer has dependencies that aren’t bundled. Rebuild as a Fat JAR (Uber JAR) with all transitive dependencies included. Deserialization returns garbled output — The message was produced with a different serializer than the one you configured. Check the magic byte prefix: Confluent Schema Registry messages start with 0x00 followed by a 4-byte schema ID.