如何在Kafka-Connect API中设置max.poll.records

时间:2016-11-10 10:29:42

标签: apache-kafka apache-kafka-connect

我正在使用confluent-3.0.1平台并构建Kafka-Elasticsearch连接器。为此,我正在扩展SinkConnector和SinkTask(Kafka-connect API)以从Kafka获取数据。

作为此代码的一部分,我将SinkConnector的taskConfigs方法扩展为返回“max.poll.records”,一次只能获取100条记录。但它没有工作,我同时得到所有记录,我没有在规定的时间内提交抵消。请任何人帮我配置“max.poll.records”

 public List<Map<String, String>> taskConfigs(int maxTasks) {
    ArrayList<Map<String, String>> configs = new ArrayList<Map<String, String>>();
    for (int i = 0; i < maxTasks; i++) {
      Map<String, String> config = new HashMap<String, String>();
      config.put(ConfigurationConstants.CLUSTER_NAME, clusterName);
      config.put(ConfigurationConstants.HOSTS, hosts);
      config.put(ConfigurationConstants.BULK_SIZE, bulkSize);
      config.put(ConfigurationConstants.IDS, elasticSearchIds);
      config.put(ConfigurationConstants.TOPICS_SATELLITE_DATA, topics);
      config.put(ConfigurationConstants.PUBLISH_TOPIC, topicTopublish);
      config.put(ConfigurationConstants.TYPES, elasticSearchTypes);
      config.put("max.poll.records", "100");

      configs.add(config);
    }
    return configs;
  }

2 个答案:

答案 0 :(得分:4)

您无法在连接器配置中覆盖大多数Kafka使用者配置,例如max.poll.records。您可以在Connect worker配置中执行此操作,但前缀为consumer.

答案 1 :(得分:1)

它解决了。我在connect-avro-standalone.properties

中添加了以下配置
 group.id=mygroup
 consumer.max.poll.records=1000

并运行以下命令以运行我的连接器。

sh ./bin/connect-standalone ./etc/schema-registry/connect-avro-standalone.properties ./etc/kafka-connect-elasticsearch/connect-elasticsearch-sink.properties