【问题标题】:Why do Kafka Consumers lose their data?为什么 Kafka 消费者会丢失他们的数据?
【发布时间】:2020-09-11 02:27:19
【问题描述】:

Kafka Consumer 工作时因数据库问题无法正常完成工作。之后,数据库状态恢复正常。

数据库出现问题时收到的消息丢失。为什么kafka因为数据库问题不能正常处理数据,但是offset偏移了?

例如,在收到offset 10到offset 100的消息时,数据库运行异常,从101开始数据库运行正常,但是offset从101开始运行,10到100的数据丢失。 ack模式是手动的

【问题讨论】:

  • 当数据库工作异常时,您是否发送管理消息的确认?
  • 消费者不维护状态,所以没有数据丢失...你的意思是主题丢失数据?

标签: java apache-kafka kafka-consumer-api


【解决方案1】:

每个KafkaConsumer(更准确地说:每个ConsumerGroup)的偏移位置存储在内部Kafka主题__consumer_offsets中。在本主题中,删除策略设置为compact,这意味着它最终会保留有关最后提交的偏移量的信息。

现在,就像您的情况一样,如果消费者未能提交消息 10 到 100,但随后提交了消息 101,那么您的 Kafka 消费者将继续使用偏移量为 102 的消息,并且不会 尝试再次阅读第 10 到 100 条消息。

只要 Kafka 被告知你的 ConsumerGroup 的偏移位置,如果你没有区别

A) 不要提交消息 10 到 100,然后提交 101

B) 执行提交消息 10 到 100,然后提交 101。

我已经在另一个 post 中更详细地解释了这种行为

【讨论】:

    猜你喜欢
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2021-02-05
    • 2016-04-13
    相关资源
    最近更新 更多