【发布时间】:2018-03-27 19:32:38
【问题描述】:
如果我不想使用自动提交模式 - sping 提供了另一种方法来做到这一点。
spring-kafkfa/#committing-offsets 向我们提供以下有关提交偏移的信息:
RECORD- 处理后监听返回时提交偏移量 记录。BATCH- 当所有记录返回时提交偏移量 poll() 已被处理。TIME- 当所有 poll() 返回的记录已被处理,只要 自上次提交以来的确认时间已超过。COUNT- 提交 当 poll() 返回的所有记录都被处理完时的偏移量 只要自上次提交以来已收到 ackCount 记录。COUNT_TIME- 类似于 TIME 和 COUNT 但如果执行提交 任一条件为真。MANUAL- 消息侦听器负责 确认()确认;之后,相同的语义 应用 BATCH。MANUAL_IMMEDIATE- 立即提交偏移量 当 Acknowledgement.acknowledge() 方法被 听众。
我有几个问题:
TIME
据我了解,spring 框架中的某处存在循环,该循环执行循环
while(true){
data = consumer.poll();
data.foreach(record->listener.listen(record))
}
民意调查多久进行一次?
时间是提交偏移的唯一标准吗? 假设 poll 返回了 100 条记录,而 ackTime 过期时 - 只处理了 60 条记录?
我没有发现MANUAL_IMMEDIATE 和MANUAL 之间的区别
请为我澄清这些问题。
附言
据我了解,Garry Russel 对 foreach 的回答如下所示:
while(true){
data = consumer.poll();
data.foreach(record->new Thread(()->listener.listen(record)).start());
}
【问题讨论】:
标签: java spring kafka-consumer-api spring-kafka