我们服务组中客户端的所有配置的拳头是enable.auto.commit = false
和auto.offset.reset = earliest
,以确保未提交未处理的消息。
现在,我想了解如何确保例如服务崩溃时消息不会丢失。我要确保的是以下情况:
如果我理解正确,那么当服务再次启动时,它将接收从偏移量3开始的消息,而偏移量1中的消息将会丢失,对吗?
如果可以的话,我可以通过配置对其进行修复,或者需要某种管理的偏移量吗?
为了避免在消息A之前提交消息B(偏移量2),可以使用commitSync
应用同步提交。
此外,请注意,主题中的每个分区都有其自己的偏移量计数。最多一名消费者可以从Kafka中读取一个分区。这意味着,如果您使用同步提交,则可以避免出现您所描述的情况。
由于每个分区只有一个使用者,因此还可以确保消息A在消息B之前到达使用者。