Manually Committing Offsets
通常,在使用 AckMode.MANUAL
或 AckMode.MANUAL_IMMEDIATE
时,必须按顺序确认确认,因为 Kafka 不会为每条记录维护状态,只会维护每个组/分区的一个已提交偏移量。从 2.8 版开始,您现在可以设置容器属性 asyncAcks
,这样就可以按任何顺序确认轮询返回的记录确认。侦听器容器会延迟确认超出顺序的提交,直到收到缺少的确认为止。系统会暂停消费者(不发送任何新记录),直到已经提交先前轮询的所有偏移量。
虽然此功能允许应用程序异步处理记录,但应该明白,在发生故障后这会增加重复交付的可能性。
当 asyncAcks
被激活时,不能在 Committing Offsets 中使用 nack()
(否定确认)。