卡夫卡生产者API 0.8.2.1与1.0.1代理不兼容?

时间:2019-04-27 07:28:25

标签: apache-kafka kafka-producer-api

我正在使用版本为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。

是由版本兼容问题引起的吗?

1 个答案:

答案 0 :(得分:0)

生产者API围绕Kafka 0.9进行了重写,以便将偏移量存储在Kafka中,而不是Zookeeper中。尚不清楚是否将GetOffsetShell与Zookeeper选项一起使用。

较新的代理大多向下兼容至0.10.2版本,但您不应指望较新的代理能与新的代理版本正常工作

https://cwiki.apache.org/confluence/display/KAFKA/Compatibility+Matrix