我正在使用版本为0.8.2.1的kafka生成器写入kafka broker,其版本为1.0.1 async。我的代码就像吼叫:
KafkaProducer producer = new KafkaProducer(configs);
ProducerRecord producerRecord = new ProducerRecord("topic", "key", "value");
producer.send(producerRecord, new CallBack(){
@override
public void onCompletion(RecordMetadata metadata,
java.lang.Exception exception){
if(metadata != null){
System.out.println(metadata.partition() + "|" + metadata.offset());
}
});
我发现我的生产者应用程序日志中的“onCompletion”方法打印的分区偏移大于kafka broker的偏移量,这是由shell命令“./kafka-run-class.sh kafka.tools.GetOffsetShell”查询的。
我的制作人设置了配置“acks = all”
例如,分区0的偏移量在日志中为30000,但是由shell命令查询为10000。
它是由版本兼容问题引起的吗?
生产者API在Kafka 0.9周围重写,因此偏移量存储在Kafka中,而不是Zookeeper中。目前尚不清楚你是否使用了带有Zookeeper选项的GetOffsetShell。
较新的代理大多向后兼容到版本0.10.2,但您不应期望比这些版本更小的旧版客户端与更新的代理版本一起正常工作
https://cwiki.apache.org/confluence/display/KAFKA/Compatibility+Matrix