我在哪里定义topic.metadata.refresh.interval.ms?

时间:2014-12-31 15:10:06

标签: apache-kafka

我正在测试一下kafka,希望很快就能把它放到我的生产堆栈中。
我正在使用文件kafka-console-producer.shkafka-console-consumer.sh来测试kafka的功能。

我创建了一个包含2个分区的主题,但我发现生产者发送的所有消息都将转到一个分区。

我在互联网上搜索了这个,并且读到有一个名为topic.metadata.refresh.interval.ms的设置告诉生产者改变它当前正在写入的分区,并且默认值为10分钟。

我正在尝试更改此设置,但我不明白在哪里......?

3 个答案:

答案 0 :(得分:2)

Kafka属性可以在以下三个文件中找到

<强> server.properties, producer.properties, consumer.properties

这些文件将在 kafka-folder/config/ 文件夹中提供。默认情况下,这些文件中将提供一些属性。您可以添加所需的属性。此链接 https://kafka.apache.org/08/configuration.html 中提供了属性列表。此链接包含服务器,生产者和消费者的所有属性的详细说明。

由于 topic.metadata.refresh.interval.ms 是生产者配置,因此您需要在 producer.properties 文件中添加此属性

请注意,上述链接是 kafka-0.8版本的属性配置。

答案 1 :(得分:2)

您也可以在producer class

中进行设置
Properties props = new Properties();
props.put("topic.metadata.refresh.interval.ms", "10");
ProducerConfig config = new ProducerConfig(props);

答案 2 :(得分:1)

我知道您指的是Java客户端,Jaya的答案就足够了。如果您正在使用构建在librdkafka之上的客户端配置,那么配置可能会略有不同:

https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md

metadata.max.age.ms
元数据缓存最大年龄。默认为metadata.refresh.interval.ms * 3.类型:整数

topic.metadata.refresh.interval.ms
主题元数据刷新间隔(以毫秒为单位)。元数据会在出错时自动刷新并连接。使用-1可禁用间隔刷新。类型:整数