我将Spring和Spring Kafka用于批处理服务,该服务从Kafka收集数据,直到满足特定条件,然后转储数据。
我想在数据离开我的服务时确认提交,但是它可能在内存中停留5-10分钟。
鉴于Spring Kafka中的Acknowledgment实现会保留原始记录,因此在我转储我的数据(考虑到对内存利用率的影响)之前,保留原始记录似乎是不合理的。
仅给出分区/偏移量信息,还有其他方法可以从Spring Kafka确认/提交偏移量吗?
答案 0 :(得分:0)
您可以将AckMode.TIME
或AckMode.COUNT
与不可思议的ackTime
或ackCount
配合使用,以使容器永远不会进行确认。
然后,将Consumer<?, ?>
传递到您的侦听器方法中,并进行偏移量提交。
但是,请注意,使用者不是线程安全的,因此必须在侦听器线程上执行提交。
此外,请记住,记录不是单独确认的,只是偏移量。您不能“无序地”确认。
此外,您可能需要将max.poll.interval.ms
增加到其默认值(5分钟)以上,以避免分区重新平衡。