我正在运行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参数?
提前谢谢!
1条答案
按热度按时间7qhs6swi1#
我终于对这个问题有了答案。实际上,生产者会定期更新元数据。间隔由配置参数topic.metadata.refresh.interval.ms定义
默认情况下,topic.metadata.refresh.interval.ms的值为300000(毫秒)。这是5分钟,测试只持续了2分钟。在元数据刷新之后,生产者将自动识别新添加的分区。
因此,对于有相同问题的任何人,都可以将此参数配置为具有更快的元数据刷新。无需编码,只需通过以下方式设置此值:
当然,您需要考虑这意味着代理和生产者之间需要更多的消息传递。关于librdkafka配置的更多信息:librdkafka配置