我正在尝试使用Confluent Kafka REST代理从我的一个主题中检索Avro格式的数据,但是不幸的是我遇到了反序列化错误。我正在使用以下命令查询Kafka REST代理
curl -X GET -H "Accept: application/vnd.kafka.avro.v2+json"
http://localhost:8082/consumers/my-group/instances/my-consumer/records?timeout=30000
我得到回应
{
"error_code": 50002,
"message": "Kafka error: Error deserializing key/value for partition input-0 at offset 0. If needed, please seek past the record to continue consumption."
}
以及Kafka Rest Proxy服务器上的日志是:
org.apache.kafka.common.errors.SerializationException: Error deserializing key/value for partition input-0 at offset 0. If needed, please seek past the record to continue consumption.
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id -1
Caused by: org.apache.kafka.common.errors.SerializationException: Unknown magic byte!
数据已使用KafkaAvroSerializer生成,并且该模式存在于Schema Registry中。另外请注意,使用CLI上的avro-console-consumer可以读取数据。
有人知道如何解决此问题吗?
答案 0 :(得分:0)
最有可能的是,除了关于该主题的有效Avro消息外,您也有无效的消息。这就是该错误的含义,也正是我尝试通过REST代理在本地使用非Avro消息时遇到的错误:
ERROR Unexpected exception in consumer read task id=io.confluent.kafkarest.v2.KafkaConsumerReadTask@2e20d4f3 (io.confluent.kafkarest.v2.KafkaConsumerReadTask)
org.apache.kafka.common.errors.SerializationException: Error deserializing key/value for partition avrotest-0 at offset 2. If needed, please seek past the record to continue consumption.
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id -1
Caused by: org.apache.kafka.common.errors.SerializationException: Unknown magic byte!
我将使用诸如kafkacat
之类的工具来检查实际消息是否位于错误给出的偏移处,例如:
kafkacat -C -b localhost:9092 -t test_topic_avro -o 0 -c 1
-o 0
将消耗偏移量为0的消息,而-c 1
意味着仅消耗一条消息。
您也可以Git Plugin,例如对于主题avrotest
,将偏移量移至1
:
echo '{ "offsets": [ { "topic": "avrotest", "partition": 0, "offset": 1 } ] }' | \
http POST localhost:8082/consumers/rmoff_consumer_group/instances/rmoff_consumer_instance/positions \
Content-Type:application/vnd.kafka.v2+json
答案 1 :(得分:0)
直到最近才支持在其余代理中使用字符串键和 AVRO 值:
https://github.com/confluentinc/kafka-rest/issues/210
最近代码已经合并,但问题仍然存在且文档尚未完全更新: