【发布时间】:2017-07-10 19:09:44
【问题描述】:
当enable.auto.commit设置为true时,Rdkafka是否保证它只commets已经被应用处理的偏移量?
假设在偏移量 204301 处有一条消息。 是否有可能在应用程序完成对该消息的处理之前已经提交了偏移量 204301?
【问题讨论】:
标签: kafka-consumer-api confluent-platform
当enable.auto.commit设置为true时,Rdkafka是否保证它只commets已经被应用处理的偏移量?
假设在偏移量 204301 处有一条消息。 是否有可能在应用程序完成对该消息的处理之前已经提交了偏移量 204301?
【问题讨论】:
标签: kafka-consumer-api confluent-platform
它将提交从库中轮询的任何偏移量 - librdkafka 无法知道您是否完成了对消息的处理
如果您想在失败的情况下至少保留一次语义 100% 时间,则必须手动提交。
最好的办法是轮询一些数据,处理它们(一个一个或一个批次),一旦完成,提交偏移量,每 X 条消息或 Y 毫秒(不要提交每条消息,这将让经纪人无缘无故忙碌)
【讨论】: