我跑rdkafka_simple_producer.c生成消息到卡夫卡集群。我有一个主题,30个分区。使用默认循环分区。虽然制片工作,并产生消息卡夫卡,我添加到卡夫卡更多的分区
kafka/bin/kafka-topics.sh --alter --zookeeper server2:2181 --topic demotest --partitions 40
我期望生产者实现此变化,并最终开始生产到所有40个主题。但是,在端我只看到数据制作到原来的30个分区。
在测试生产者跑了2分钟。
我需要在simple_producer添加任何函数调用或者是一个卡夫卡参数我需要考虑?
提前致谢!
我终于有这个问题的回答。其实,生产商是有关元数据定期更新。间隔由配置参数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