消费者通过向称为群组协调器的 broker (不同的群组有不同的协调器)发送心跳来维持它和群组的从属关系以及对分区的所有权关系。...在使用自动提交时, 每次调用轮询方法都会把上一次调用返回的最大偏移量提交上去 , 它并不知道具体哪些消息已经被处理了 , 所以在再次调用之前最好确保所有当前调用返回的消息都已经处理完毕(enable.auto.comnit...一般情况下不会有什么问题, 不过在处理异常或提前退出轮询时要格外小心。
自动提交虽然方便 , 但是很明显是一种基于时间提交的方式 , 不过并没有为我们留有余地来避免重复处理消息。..., 消费者在退出和进行分区再均衡之前 , 会做一些清理工作比如,提交偏移量、关闭文件句柄、数据库连接等。...不过 , 在退出线程之前调用 consumer.close() 是很有必要的 , 它会提交任何还没有提交的东西, 并向群组协调器发送消息 , 告知自己要离开群组 , 接下来就会触发再均衡 , 而不需要等待会话超时