【发布时间】:2020-05-18 19:49:19
【问题描述】:
我们服务组中客户端的所有配置中的第一个是enable.auto.commit = false和auto.offset.reset = earliest,以确保未处理的消息不会被提交。
现在我想了解如何保证消息不会丢失,例如服务崩溃。 我要确保的是以下情况:
- 接收到偏移量为 1 的消息 A - 服务开始处理消息(异步)
- 收到偏移量为 2 的消息 B - 服务开始处理消息(异步)
- 消息 B 的处理已完成,偏移量 2 已提交给 Kafka。
- 在完成消息 A 的处理并提交偏移量 1 之前,服务会重新启动。
- 服务再次启动并处理来自偏移量 1 的消息,因为它尚未提交。
如果我理解正确,那么当服务再次启动时,它将接收从偏移量 3 开始的消息,并且偏移量 1 中的消息将丢失,对吗?
如果我是对的,我可以通过配置修复它还是需要对提交的偏移量进行某种管理?
【问题讨论】:
标签: apache-kafka kafka-consumer-api