kafka: enable.auto.commit 是否开启自动提交, auto.commit.interval.ms 自动提交时间间隔
这么说,我们的 Consumer 正在消费一个 Offset 是100的消息,同时这个 Consumer 取回了一些数据,这个 Offset 提交了,然后 Consumer 崩溃了。在我们回来的时候,我们会重新从最新提交的 Offset 去进行消息的消费,但是我们如何能安全地说,我们没有丢失消息,并且这个新消息的 Offset 不会比刚刚被处理的那个消息靠后呢?这给与了我们完全的控制,什么时候去处
enable.auto.commit 的默认值是 true;就是默认采用自动提交的机制。
auto.commit.interval.ms 的默认值是 5000,单位是毫秒。
默认5秒钟,一个 Consumer 将会提交它的 Offset 给 Kafka,或者每一次数据从指定的 Topic 取回时,将会提交最后一次的 Offset。
这样,在某些场景下,这是理想的表现,但是在其他场景下,并不是。
这么说,我们的 Consumer 正在消费一个 Offset 是100的消息,同时这个 Consumer 取回了一些数据,这个 Offset 提交了,然后 Consumer 崩溃了。在我们回来的时候,我们会重新从最新提交的 Offset 去进行消息的消费,但是我们如何能安全地说,我们没有丢失消息,并且这个新消息的 Offset 不会比刚刚被处理的那个消息靠后呢?
解决这个问题的方案就是我们手动地提交这个 Offset,在处理完这些消息之后。这给与了我们完全的控制,什么时候去处理一个消息,什么时候去让 Kafka 知道这个。
enable.auto.commit: false
我们把这个参数设置为 false ,就会由我们自己手动地来处理这个事情。
如果 enable.auto.commit 设置成 false,那么 auto.commit.interval.ms 也就不被再考虑了
参考:【精选】容易被误会的 Kafka 消费者属性 enable.auto.commit_enable-auto-commit-CSDN博客
更多推荐
所有评论(0)