Spring Kafka Consumer Configs-默认值和至少一次语义



我正在使用spring-kafka模板编写kafka消费者。当我实例化消费者时,Springkafka会接受如下参数。

props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
props.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, fetchMaxBytes);
props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, maxPartitionFetchBytes);

我阅读了文档,看起来还有很多其他参数可以在消费者配置时传递。有趣的是,每个参数都有一个默认值。我的问题是

  1. 这些是根据什么到达的
  2. 是否真的需要更改这些值,如果需要,这些值会是什么
    (IMHO,这是根据具体情况而定。但仍然希望听到来自专家(
  3. 我们的交付语义至少是一次。因此,对于这个(至少一次(交付语义,是否应该保留这些不受影响,它仍然可以处理大量数据

任何提示或答案都会对澄清我的疑虑有很大帮助。

默认值是为围绕Kafka的大多数用例提供服务。然而,假设这些不同的配置可以设置为所有用例,那将是一种错觉。

了解默认值的一个好的起点是简单的Kafka ConsumerConfiguration及其文档。在Confluence文档中,您还可以找到每个配置的";重要性";。如果这个重要性设置得很高,建议认真考虑。我在这里提供了更多关于重要性的背景信息。

至少一次

对于至少一次语义,您希望控制已消费消息的提交。为此,enable.autto.commit需要设置为false,这是自spring版本2.3(以来的默认值。此外,AckMode默认设置为BATCH,这是至少一次语义的基础。

因此,根据您的Spring版本,您似乎可以保留默认配置来实现至少一次语义。

最新更新