gpt4 book ai didi

java - Spring 批处理-Kafka : KafkaItemReader reads the data ALWAYS from beginning

转载 作者:行者123 更新时间:2023-12-02 09:05:21 32 4
gpt4 key购买 nike

我愿意使用 Spring Batch 进行 Kafka 数据消费。这个spring-tips链接有一个基本示例。

这是我的阅读器:

  @Bean
KafkaItemReader<String, String> kafkaItemReader() {
var props = new Properties();
props.putAll(this.properties.buildConsumerProperties());

return new KafkaItemReaderBuilder<String, String>()
.partitions(0)
.consumerProperties(props)
.name("customers-reader")
.saveState(true)
.topic("test-consumer")
.build();
}

我的application.properties文件:

 spring:
kafka:
consumer:
bootstrap-servers: localhost:9092
group-id: groupid-Dev
enable-auto-commit: false
auto-offset-reset: latest
auto.commit.interval.ms: 1000
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserialize

问题:

  • 每次启 Action 业时,它都会寻找第 0 个偏移量。所以,我从一开始就收到消息。这是一个错误吗?
  • 为什么我们需要手动提供读取分区?将来会发生什么变化,不会影响我的代码吗?

最佳答案

Every time when I launch a job, it seeks 0th Offset. So, I am getting messages from beginning. Is this a bug?

不,这是一个功能(认真的):-)选择让kafka项目读取器从分区的开头读取是为了使其与其他读取器保持一致(它们都是从数据源的开头开始)。但在 Kafka 世界中,偏移量是一阶概念,我们将使起始偏移量可配置(为此我们有一个 PR)。这将在即将发布的 v4.3 planned for October 2020 中提供.

Why do we need to manually supply partitions to read from?

因为 Spring Batch 无法决定从给定主题名称的哪个分区读取。我们在此欢迎有关合理默认值的建议。

关于java - Spring 批处理-Kafka : KafkaItemReader reads the data ALWAYS from beginning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59853711/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com