即将到来的kafka消费者0.9.x是否会与0.8经纪商兼容?
换句话说 - 可以只切换到新的消费者实现,而不涉及任何其他内容?
答案 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。
- 重启 经纪人一个接一个地使新协议版本生效