【发布时间】:2020-01-29 20:42:36
【问题描述】:
试图了解(kafka 新手)kafka 中的 poll 事件循环是如何工作的。
用例:关于主题的 25 条记录,最大投票大小设置为 5。
max.poll.interval.ms = 5000 //5 seconds by default max.poll.records = 5
任务顺序
- 从主题中轮询记录。
- 在 for 循环中处理记录。
- 一些处理登录,其中逻辑将通过或失败。
- 如果逻辑通过(带偏移)将被添加到地图中。
- 然后它将使用 commitSync 调用提交。
- 如果失败,则循环将中断,并且在此之前的任何成功都将被提交。问题在此之后开始。
- 即使出现错误,下一次民意调查仍会以 5 个批次继续进行,这是预期的吗?
我们基本上期望的是循环中断并且偏移直到成功过程消息逻辑应该被提交,然后下一个轮询应该从失败的消息继续。
例如,第一批轮询 5 条消息已轮询,1,2 个偏移量成功并提交,然后第三批失败。因此,如果我们预期之间有任何错误,轮询调用将继续移动到下一批,如 5-10,10-15它在该点停止并且轮询应该在第一种情况下从 3 开始,或者如果它在 8 的第二批中失败,那么下一次轮询应该从第 8 个偏移量开始,而不是从下一个最大轮询批处理设置开始,在这种情况下就像 5。如果使用 SPRING BOOT PROJECT 并启用自动提交是错误的。
我已尝试在文档中找到此内容,但没有任何帮助。
尝试对此进行调整,但没有帮助 max.poll.interval.ms
编辑:不接受答案,因为没有针对客户消费者的直接解决方案。保留此信息以供参考
【问题讨论】:
标签: spring-boot apache-kafka kafka-consumer-api kafka-producer-api