在 Kafka 中,Consumer 提交位移(Offset)是告诉 Kafka Broker:“我已经成功处理了这些消息,下次请从这里继续给我发数据”。 Kafka 提供了多种提交位移的方式,以满足不同场景对吞吐量和数据可靠性(避免丢失或重复消费)的需求。主要可以分为以下几种方式: --- 1. 自动提交 (Automatic Commit) 这是最简单的方式,Kafka Consumer 会在后台定期自动提交已经拉取到的最大位移。 配置方式: (默认值) (默认 5 秒,表示每 5 秒自动提交一次) 工作原理:在每次调用 方法时,Consumer 会检查是否到达了提交时间间隔,如果到达了,就会将上一次 返回的最大位移提交上去。 优点:代码极其简单,开发者无需关心位移提交的逻辑。 缺点: 数据丢失:如果 Consumer 拉取了消息,还没处理完就崩溃了,但此时后台线程正好把位移提交了。下次重启后,这部分没处理完的消息就被跳过了。 重复消费:如果消息处理完了,但还没到 5 秒的提交时间间隔 Consumer 就崩溃了。下次重启会从上一次提交的旧位移处重新拉取,导致消息被重复处理。...