消费者重新启动后,Kafka主题的记录不会消耗

时间:2018-04-10 16:04:35

标签: apache-kafka

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

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

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

2 个答案:

答案 0 :(得分:0)

默认情况下,消费者会在建立连接后获取发布到kafka主题的消息。尝试生成器和kafka控制台消费者,而不使用--from-beginning参数

答案 1 :(得分:0)

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

此处有更多详情 - https://cwiki.apache.org/confluence/display/KAFKA/KIP-186%3A+Increase+offsets+retention+default+to+7+days