我们将数据作为字符串发送给Kafka生产商,消费者的最终输出采用Avro Schema格式。
我需要使用avro架构解码最终输出。可以有人共享示例java代码来执行此操作。
答案 0 :(得分:1)
按照以下步骤 -
1.从avro架构创建对象
java -jar /path/to/avro-tools-1.8.2.jar compile schema <schema file> <destination>
eg.
java -jar /path/to/avro-tools-1.8.2.jar compile schema user.avsc .
这将根据模式的命名空间
在包中生成相应的源文件
java -jar /path/to/avro-tools-1.8.2.jar compile schema <schema file> <destination>
eg.
java -jar /path/to/avro-tools-1.8.2.jar compile schema user.avsc .
答案 1 :(得分:0)
以下是我的解决方法:此代码将以Avro架构格式打印消费者消息。
props.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer","io.confluent.kafka.serializers.KafkaAvroDeserializer");
props.put("schema.registry.url", "http://kafka-.XXX");
KafkaConsumer<String, avro_schema> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("topic"));
//infinite poll loop
try {
while (true) {
ConsumerRecords<String, avro_schema> records = consumer.poll(200L);
for (ConsumerRecord<String, avro_schema> record : records) {
System.out.println(record.value());
}
}
}