kafka消费者0.9向后兼容吗?

时间:2015-11-19 19:15:50

标签: apache-kafka kafka-consumer-api

即将到来的kafka消费者0.9.x是否会与0.8经纪商兼容?

换句话说 - 可以只切换到新的消费者实现,而不涉及任何其他内容?

5 个答案:

答案 0 :(得分:9)

根据Kafka 0.9.0的文档,您无法使用新的使用者从0.8.x经纪人那里读取数据。 原因如下:

  

0.9.0.0具有与先前版本相比的代理间协议更改。

答案 1 :(得分:5)

没有。一般而言,建议在客户之前升级经纪人,因为经纪人的目标是向后兼容。 0.9代理将同时使用0.8消费者和0.9消费者API,但不是相反。

答案 2 :(得分:1)

基于引用的Consumer Client Re-design维基页面,

  

这将涉及对消费者API * 的一些重大更改,因此我们希望从我们的社区收集有关该提案的反馈。由于更改列表不小,我们希望了解某些功能是否优先于其他功能,更重要的是,如果不需要某些功能。

*强调我的。

我没有找到任何具体说明没有兼容性的地方。但是使用这个引用以及0.8中的生产者与0.7中的生产者不兼容的事实,我假设他们不兼容。

答案 3 :(得分:1)

我最近遇到了类似的问题,在我的应用程序中,我必须从kafka 0.9读取然后写回kafka 0.8。我以下列方式使用了kafka client 0.9。

消费者配置

    props.put("bootstrap.servers", "brokers_ip as comma seperated values");
    props.put("group.id", "your group id");
    props.put("key.deserializer", StringDeserializer.class.getName());
    props.put("value.deserializer", StringDeserializer.class.getName());
    props.put("enable.auto.commit", "true");
    props.put("auto.commit.interval.ms", 1000);
    props.put("session.timeout.ms", 30000);
    consumer = new KafkaConsumer<String, String>(props);
    consumer.subscribe("List of topics to subscribe too");

Producer Config

        Properties props = new Properties();
        props.put("bootstrap.servers","list of broker ips");
        props.put("metadata.broker.list", "list of broker ips");
        props.put("serializer.class", "kafka.serializer.StringEncoder");
        props.put("acks", "all");
        props.put("retries", 0);
        props.put("batch.size", 16384);
        props.put("linger.ms", 1);
        props.put("buffer.memory", 33554432);
        ProducerConfig config = new ProducerConfig(props);
        Producer<String, String> producer = new Producer<String, String>(config);
        String message = "hello world";
        KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic_name, message);
        producer.send(data);
        producer.close();

希望这有帮助。

答案 4 :(得分:0)

看起来kafka 0.9.0内置了后向兼容性。查看http://kafka.apache.org/documentation.html#upgrade

文件引用

  

0.9.0.0具有潜在的重大更改(请在升级之前进行检查)以及先前版本之间的代理间协议更改。滚动升级:

     
      
  • 更新所有代理上的server.properties文件并添加以下内容   财产:inter.broker.protocol.version = 0.8.2.X
  •   
  • 升级经纪人。   这可以通过简单地将它放下来一次完成一个经纪人,   更新代码,然后重新启动它。
  •   
  • 整个群集一旦完成   升级,通过编辑来破坏协议版本   inter.broker.protocol.version并将其设置为0.9.0.0。
  •   
  • 重启   经纪人一个接一个地使新协议版本生效
  •