我正在测试一下kafka,希望很快就能把它放到我的生产堆栈中。
我正在使用文件kafka-console-producer.sh
和kafka-console-consumer.sh
来测试kafka的功能。
我创建了一个包含2个分区的主题,但我发现生产者发送的所有消息都将转到一个分区。
我在互联网上搜索了这个,并且读到有一个名为topic.metadata.refresh.interval.ms
的设置告诉生产者改变它当前正在写入的分区,并且默认值为10分钟。
我正在尝试更改此设置,但我不明白在哪里......?
答案 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可禁用间隔刷新。类型:整数