我正在使用版本为0.8.2.1的kafka生产者来写入版本为1.0.1异步的kafka代理。 我的代码就像下面这样:
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”方法上打印的分区偏移量大于通过shell命令“ ./kafka-run-class.sh kafka.tools.GetOffsetShell”查询的kafka代理的偏移量。 >
我的制作人设置为“ acks = all”
例如,分区0的偏移量在日志中为30000,但是通过shell命令查询的偏移量为10000。
是由版本兼容问题引起的吗?
答案 0 :(得分:0)
生产者API围绕Kafka 0.9进行了重写,以便将偏移量存储在Kafka中,而不是Zookeeper中。尚不清楚是否将GetOffsetShell与Zookeeper选项一起使用。
较新的代理大多向下兼容至0.10.2版本,但您不应指望较新的代理能与新的代理版本正常工作
https://cwiki.apache.org/confluence/display/KAFKA/Compatibility+Matrix