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 implementationsInstall 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.
- Docker Compose
- Kubernetes
- Extend Console image
Check installation status
If everything went well, you should see this on the Console startup:Configure custom deserializer and consume data
From the Consume page, open the Value Format filter and pick your Custom Deserializer from the list.- a dropdown allowing you to select your custom deserializer implementation class
- a textarea field allowing you to pass some properties to configure your custom deserializer instance (We’ll call the
org.apache.kafka.common.serialization.Deserializer<T>::configuremethod with these properties)
Properties example
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 theapicurio.registry.url property as shown above.
Other proprietary formats
Any format that can be decoded by a Java class implementingorg.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 forRegister 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.