使用kafka-avro-console-consumer

时间:2018-06-28 12:19:13

标签: apache-kafka avro confluent confluent-schema-registry

我有一个Kafka Producer,可以将Avro记录发送到“测试”主题。我也有一个架构注册表,其中存储了每个记录的架构。

之后,我使用命令

kafka-avro-console-consumer --topic test --zookeeper localhost:2181  --from-beginning

检索我发送的Avro记录,并返回如下JSON输出:

{"A":"HI","B":"HELLO","C":"HEY","D":99999,"E":90,"F":"YO"}

现在的问题是,我想获取输出,而不是JSON格式,而是遵循Avro二进制格式的字节数组。

例如:

[2, 65, 2, 78, 2, 78, -66, -102, 12, -76, 1, -16, 90, 0]

我可以使用任何反序列化器来完成此操作吗?我尝试使用

--value-deserializer io.confluent.kafka.serializers.KafkaAvroDeserializer

-value-deserializer org.apache.kafka.common.serialization.ByteArrayDeserializer

但是没有用。

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

没有这样的内置反序列化器(实际上是格式化程序)。

Avro控制台使用者使用JSON格式化程序

Regular console consumer will output UTF8 strings for the bytes

您可以构建自己的Formatter类,然后将其添加到Kafka Console消费者类路径中

--formatter <String: class>              The name of a class to use for
                                           formatting kafka messages for
                                           display. (default: kafka.tools.
                                           DefaultMessageFormatter)

答案 1 :(得分:-1)

只需在connect-standalone.properties中进行此更改

key.converter = org.apache.kafka.connect.avro.AvroConverter value.converter = org.apache.kafka.connect.avro.AvroConverter