繁体   English   中英

使用新的Kafka客户端获取旧版Kafka发布的主题的分区信息时超时

[英]Timeout when getting partition info for topic published by older kafka using new kafka client

我有一个使用kafka客户端2.11:0.10.2.1的小型Java Spark服务

以下是当我阅读从最新的Kafka版本发布的主题时工作正常的代码:

    Properties props = new Properties();
    props.put(org.apache.kafka.clients.producer.ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, producerConfig.getBrokerConnectionString());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.ACKS_CONFIG, "all");
    props.put(org.apache.kafka.clients.producer.ProducerConfig.RETRIES_CONFIG, producerConfig.getRetry());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.BATCH_SIZE_CONFIG, producerConfig.getBatchSize());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.LINGER_MS_CONFIG, producerConfig.getLingerTimeInMs());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, producerConfig.getRequestTimeout());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.MAX_BLOCK_MS_CONFIG, producerConfig.getMaxBlockMS());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.CONNECTIONS_MAX_IDLE_MS_CONFIG, producerConfig.getMaxIdleTime());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.BUFFER_MEMORY_CONFIG, maxBytesInBuffer / producerConfig.getProducersCount());
    props.put(org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    props.put(org.apache.kafka.clients.producer.ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer");
    producers = new Producer[1];
    producers[0] = new KafkaProducer<>(props);
    producers[0].partitionsFor("mYTopic").size(); 

现有一个Kafka主题,其中kafka版本是0.8.2.x。 我也想为此使用相同的代码。 但是此代码在最后一行( partitionsFor )中给出了由Kafka发布的0.8.2.x版主题的超时。 在这方面的任何帮助将不胜感激。

简而言之:Kafka主题(由0.8.2.x发布)无法被0.10.2.1客户端读取

通常,经纪人相对于客户是向后兼容的,但是客户相对于经纪人是不向后兼容的。 最新发布的版本对此稍有放松,但对于0.10以上的经纪商仍然适用。

http://kafka.apache.org/documentation.html#upgrade

从版本0.10.2开始,Java客户端(生产者和消费者)已经具有与较早的代理进行通信的能力。 版本0.11.0的客户可以与版本0.10.0或更高版本的代理通信。 但是,如果您的代理早于0.10.0,则必须先升级Kafka群集中的所有代理,然后再升级客户端。 版本0.11.0代理支持0.8.x和更高版本的客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM