【发布时间】:2017-03-06 06:03:52
【问题描述】:
我是 kafka 甚至序列化的新手。到目前为止,我需要处理使用简单代码序列化的 json 格式的 kafka 事件。但现在正在使用 Avro 编码器添加额外的事件。所以现在我希望这个单一的消费者在 json 中使用 StringDeserialzer,对于 Avro 使用其各自的反序列化器。但是如何在同一个属性文件中映射 2 个反序列化器?
private Properties getProps(){
Properties props = new Properties();
props.put("group.id", env.getProperty("group.id"));
props.put("enable.auto.commit", env.getProperty("enable.auto.commit"));
props.put("key.deserializer", env.getProperty("key.deserializer"));
props.put("value.deserializer", env.getProperty("value.deserializer"));
return props;
}//here as only value can be mapped to "key.deserializer" is there anyway to do this
在主方法中
KafkaConsumer<String, String> _consumer = new KafkaConsumer<>(getProps());
consumers.add(_consumer);
_consumer.subscribe(new ArrayList<>(topicConsumer.keySet()));
【问题讨论】:
-
您可以在代码中设置序列化器和反序列化器。看到这个答案stackoverflow.com/questions/40154086/…
标签: java serialization properties avro kafka-consumer-api