librdkafka制作人如何了解kafka中的新主题分区

ymzxtsji  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(491)

我正在运行rdkafka\u simple\u producer.c来向kafka集群生成消息。我有一个主题和30个分区。使用默认的循环分区器。当生产者正在工作并向kafka生成消息时,我向kafka添加了更多的分区

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

我希望制作人意识到这一变化,并最终开始制作所有40个主题。但是,在最后我只看到数据被生成到原来的30个分区。
在测试中,制作人跑了2分钟。
我需要在simple\u producer中添加任何函数调用,还是需要考虑它是kafka参数?
提前谢谢!

7qhs6swi

7qhs6swi1#

我终于对这个问题有了答案。实际上,生产者会定期更新元数据。间隔由配置参数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配置

相关问题