Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.14.2, 2.15.2, 2.16.0
-
None
-
Patch Available
-
Unknown
-
Patch
Description
Kafka natively supports two encoders for messages:
- kafka.serializer.DefaultEncoder - encodes as byte arrays
- kafka.serializer.StringEncoder - encodes as Strings
Camel-kafka exposes settings to select the encoder ((serializerClass and keySerializerClass), but the org.apache.camel.component.kafka.KafkaProducer class hard-codes String for both the key and value types. This results in a ClassCastException when using the DefaultDecoder.
The attached patch fixes this as follows (conforming to kafka itself):
- If no serializerClass option is specified, the DefaultDecoder is used.
- If no keySerializerClass option is specified, the same encoder as serializerClass is used
This fix shouldn't break any existing code, as there was not previously a default setting (i.e., StringEncoder always had to be specified).
I created the patch against master, but it should backport easily to 2.15.x and 2.14.x.