Spring Kafka中的ACK延迟

时间:2018-10-31 10:25:56

标签: java spring apache-kafka kafka-consumer-api spring-kafka

我将Spring和Spring Kafka用于批处理服务,该服务从Kafka收集数据,直到满足特定条件,然后转储数据。

我想在数据离开我的服务时确认提交,但是它可能在内存中停留5-10分钟。

鉴于Spring Kafka中的Acknowledgment实现会保留原始记录,因此在我转储我的数据(考虑到对内存利用率的影响)之前,保留原始记录似乎是不合理的。

仅给出分区/偏移量信息,还有其他方法可以从Spring Kafka确认/提交偏移量吗?

1 个答案:

答案 0 :(得分:0)

您可以将AckMode.TIMEAckMode.COUNT与不可思议的ackTimeackCount配合使用,以使容器永远不会进行确认。

然后,将Consumer<?, ?>传递到您的侦听器方法中,并进行偏移量提交。

但是,请注意,使用者不是线程安全的,因此必须在侦听器线程上执行提交。

此外,请记住,记录不是单独确认的,只是偏移量。您不能“无序地”确认。

此外,您可能需要将max.poll.interval.ms增加到其默认值(5分钟)以上,以避免分区重新平衡。