【问题标题】:Where do i define topic.metadata.refresh.interval.ms?我在哪里定义 topic.metadata.refresh.interval.ms?
【发布时间】:2015-02-27 15:30:50
【问题描述】:

我正在对 kafka 进行一些测试,希望很快能将其放入我的生产堆栈中。
我正在使用文件kafka-console-producer.shkafka-console-consumer.sh 来测试kafka 的功能。

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

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

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

【问题讨论】:

  • 您是如何发现所有消息都发送到一个分区的?

标签: apache-kafka


【解决方案1】:

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版本的属性配置。

【讨论】:

  • 如果我想在python SimpleProducer中设置这个属性,那我该如何定义呢?
【解决方案2】:

您也可以在producer class 中设置它:

Properties props = new Properties();
props.put("topic.metadata.refresh.interval.ms", "10");
ProducerConfig config = new ProducerConfig(props);

【讨论】:

    【解决方案3】:

    我了解您指的是 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 禁用间隔刷新。类型:整数

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2016-02-19
      相关资源
      最近更新 更多