如何librdkafka生产者了解卡夫卡新主题分区

问题描述 投票:1回答:1

我跑rdkafka_simple_producer.c生成消息到卡夫卡集​​群。我有一个主题,30个分区。使用默认循环分区。虽然制片工作,并产生消息卡夫卡,我添加到卡夫卡更多的分区

kafka/bin/kafka-topics.sh --alter --zookeeper server2:2181 --topic demotest --partitions 40

我期望生产者实现此变化,并最终开始生产到所有40个主题。但是,在端我只看到数据制作到原来的30个分区。

在测试生产者跑了2分钟。

我需要在simple_producer添加任何函数调用或者是一个卡夫卡参数我需要考虑?

提前致谢!

apache-kafka kafka-producer-api librdkafka
1个回答
1
投票

我终于有这个问题的回答。其实,生产商是有关元数据定期更新。间隔由配置参数topic.metadata.refresh.interval.ms定义

topic.metadata.refresh.interval.ms的价值为300000(毫秒)默认情况下。这是5分钟,并测试只持续2分钟。生产者将元数据刷新后自动识别新添加的分区。

因此,对于同样的问题任何人,您可以配置此参数可以有更快的元数据刷新。无需编写代码比设置此值:

rd_kafka_conf_set(conf, "topic.metadata.refresh.interval.ms", "15000",
                          errstr, sizeof(errstr)) != RD_KAFKA_CONF_OK)

当然,你需要考虑,这意味着经纪人和制作人之间的更多消息。更多关于librdkafka配置:librdkafka configuration

© www.soinside.com 2019 - 2024. All rights reserved.