可以用kafka rest代理读取二进制avro消息吗?

omqzjyyz  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(380)

我不完全理解整个avro序列化生态系统是如何构建的。
最初我是这样想的:

但是,我尝试将二进制avro消息发布到主题,然后使用rest代理读取该消息,但出现了一个错误: {"error_code":50002,"message":"Kafka error: java.io.CharConversionException: Invalid UTF-32 character 0xa126572(above 10ffff) at char #1, byte #7)"} .
我错在哪里?
如果有关系的话,我从这里用例子来写,从这里来读。

a64a0gku

a64a0gku1#

使用kafka命令行工具为新主题生成新的avro消息并将其读回: /usr/bin/kafka-avro-console-producer 生成avro消息。 /usr/bin/kafka-avro-console-consumer 使用avro消息。
这些工具记录在此处的快速入门中:https://docs.confluent.io/current/quickstart.html
一旦你有工作,然后确保你的自定义客户机与官方命令行生产者的工作,并确保你的自定义生产者与官方命令行客户端的工作。
如果你像那样把它分成几个小步骤,你就会知道你的问题在哪里,有一个更窄的问题要解决。

myzjeezk

myzjeezk2#

最后发现我用错误的格式(json而不是avro)定义了consumer。否则一切正常。感谢@cricket\u007的提示。
在创建我正在做的消费者时

curl -X POST -H "Content-Type: application/vnd.kafka.v2+json" \
--data '{"name": "my_consumer_instance", "format": "json", "auto.offset.reset": "earliest"}' \
http://192.168.99.101:8082/consumers/my_json_consumer

而正确的版本是

curl -X POST -H "Content-Type: application/vnd.kafka.v2+json" \
--data '{"name": "my_consumer_instance", "format": "avro", "auto.offset.reset": "earliest"}' \
http://192.168.99.101:8082/consumers/my_json_consumer

相关问题