I was trying to use Spring framework built-in ProtobufMessageConverter
to convert my kafka message but I couldn’t seem to find a way to have this converter being used.
The configuration of my binding is as the following:
bindings: input-in-0: destination: test-input group: test-group content-type: application/x-protobuf;charset=UTF-8
When I use my custom message converter, I can see it registered in SimpleFunctionRegistry.messageConverter
which is a list of customer converter and default ones. However, ProtobufMessageConverter
doesn’t seem to be included in default converters (they are registered in CompositeMessageConverterFactory.initDefaultConverters
) and also filtered out by ContentTypeConfiguration.isConverterEligible
if I try to instantiate it manually.
I checked the official document but it doesn’t mention how to properly use the converter.I would be grateful if anyone can share your experience on how to use it.
Advertisement
Answer
The fact that it is registered in SimpleFunctionRegistry.messageConverter
is enough. The initDefaultConverters
is outdated functionality from the annotation-based support in s-c-stream and is not affecting you here (assuming you are using function-based programming model).
Anyway, in the list of converters in SimpleFunctionRegistry
your converter should be the first one and should be the first one to be tried by SmartCompositeMessageConverter.
What I suspect is that something is wring with the implementation of your ProtobufMessageConverter
since it does not respond to application/x-protobuf;charset=UTF-8
content type when it test if this converter supports a particular message. But without seeing the implementation or having a reproducible sample it is hard to say what that may be. Perhaps you can create a bare minimum sample and push i to github somewhere so we can take a look?