rod*_*olk 3 apache-kafka kafka-producer-api librdkafka
我正在运行 rdkafka_simple_ Producer.c 来向 Kafka 集群生成消息。我有一个主题和 30 个分区。使用默认的循环分区器。当生产者正在工作并向 Kafka 生成消息时,我向 Kafka 添加更多分区
kafka/bin/kafka-topics.sh --alter --zookeeper server2:2181 --topic demotest --partitions 40
Run Code Online (Sandbox Code Playgroud)
我希望制作人能够意识到这一变化并最终开始制作所有 40 个主题。然而,最后我只看到数据被生成到原来的30个分区。
在测试中,制作人运行了 2 分钟。
我是否需要在 simple_ Producer 中添加任何函数调用,或者它是我需要考虑的 Kafka 参数吗?
提前致谢!
对于这个问题我终于有答案了。实际上,生产者会定期刷新元数据。间隔由配置参数 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)
Run Code Online (Sandbox Code Playgroud)
当然,您需要考虑这意味着经纪人和生产者之间有更多的消息传递。有关 librdkafka 配置的更多信息: librdkafka 配置
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |