Open InterferencePattern opened 1 month ago
@pranavrth might be the contributor most familar with the DeserializingConsumer
You need to use key.deserializer
or value.deserializer
config to make it work with deserializer otherwise you will get the message in str or bytes.
That's exactly what I'm saying. This issue isn't that it doesn't work- it does.
But the Message.value()
return from a DeserializingConsumer
is a dictionary, right? If so, this doesn't conform to the output in the Message
documentation and should be its own class.
I would offer to define such a class (like in the original description above), but the original Message class is not defined in Python.
But the Message.value() return from a DeserializingConsumer is a dictionary, right?
No, it depends on the value serializer that is provided. If no serializer is provided, it is same as what a normal consumer would return i.e. byte/str.
Okay, I've narrowed the Issue title to indicate that this is true for the AvroDeserializer
. It's really just a matter of changing the expected output type to be more inclusive of the possible values.
I would let @rayokota handle from here whose team deals with Schema Registry.
Description
The
Message
object returned byDeserializingConsumer.value()
doesn't appear to match the signature- it can return adict
, for example, and not only astr
orbytes
.How to reproduce
AvroDeserializer
to createDeserializingConsumer
.poll()
method to return messageMessage.value()
should contain deserialized dictionary instead ofstr
orbytes
I wonder if the DeserializingConsumer needs a DeserializedMessage, with something like the following:
Checklist
Please provide the following information:
confluent_kafka.version()
andconfluent_kafka.libversion()
):('2.3.0', 33751040), ('2.3.0', 33751295)
{...}
'debug': '..'
as necessary)