我正在编写一个kafka使用者,它对传入的记录进行批处理并将它们定期刷新到持久存储中。
存储系统的性质使得冲洗可能需要很长时间-有时超过一分钟。
使事情有些复杂,我在批处理中对数据进行分区的方式与kafka中的分区不匹配,因此kafka分区与存储文件之间存在多对多的关系。
此应用程序的要求是至少一次语义,在可能的范围内尽量减少重复,但是在未将kafka分区的所有批处理都包含到同一分区的较早消息都刷新到存储之前,绝对不要提交偏移。
在重新平衡之前,这都是相当简单的,此时我需要提交等待挂起的刷新,然后提交我可以在重新平衡侦听器中使用的所有偏移量。
鉴于此,我有什么方法可以调整使用者配置,以使onPartitionsRevoked
最多运行几分钟?我到底该怎么做才能允许这样做?
我知道,只要进行重新平衡,我的消费者组就不会处理任何记录。我对此表示同意(尽管我乐于接受任何其他建议,以更轻松的方式来处理再平衡问题。)