【问题标题】:Records on Kafka topic are not getting consumed after consumer restart消费者重启后,Kafka 主题的记录没有被消耗
【发布时间】:2018-09-20 08:16:46
【问题描述】:

我遇到了 Kafka 消费者非常奇怪的问题。 我的设置如下。

<prop key="enable.auto.commit">true</prop>
<prop key="auto.commit.interval.ms">10</prop>
<prop key="auto.offset.reset">latest</prop>

我的组中有 2 个消费者轮询单个主题。我没有在消费者端进行任何手动偏移管理。
现在,当我的消费者关闭并且我的主题发布的新消息很少时,通常我会在重新启动消费者时消费这些消息。
但是有一次我观察到重新启动消费者后,我无法从主题中消费那些新消息(在消费者关闭且未轮询时发布)。当我发布更多消息时,它开始从新消息偏移量读取,并且我丢失了在我的消费者关闭时发布的先前消息。
请让我知道这种行为背后的可能原因。

【问题讨论】:

  • auto.offset.reset 不是真/假。它是最新的/最早的/无....
  • 您的 __consumer_offsets 值是多少?
  • 嗨,我不在消费者端管理偏移量。
  • 不,那是 Kafka 自己维护的主题。它应该显示你的提交。
  • 不幸的是,我无权访问该主题 ​​- __consumer_offsets。我会通知你的。

标签: apache-kafka


【解决方案1】:

消费者默认获取连接建立后发布到kafka主题的消息。尝试不带--from-beginning参数的生产者和kafka控制台消费者

【讨论】:

  • 这仍然只在控制台上提取最近未提交的消息。所以在建立连接后,它会从最后提交的偏移量中读取。但在我的情况下,它跳过了新连接上的一些消息偏移量,并且从未阅读过这些消息。
【解决方案2】:

我终于找到了根本原因。 默认 offsets.retention.minutes 设置为 1440 分钟。 如果我的消费者在重启后上线并尝试在代理上找到最后提交的偏移量,那么它无法找到它导致上述默认到期的原因,然后它开始从新到达的消息偏移量中获取。 将此保留期增加到 4 天对我有帮助。

更多细节在这里 - https://cwiki.apache.org/confluence/display/KAFKA/KIP-186%3A+Increase+offsets+retention+default+to+7+days

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多