Samza相当于Kafka Consumer - 手动偏移控制(enable.auto.commit = false)

时间:2017-07-06 01:17:57

标签: kafka-consumer-api apache-samza

我们有Samza任务从Kafka输出流中读取消息,但如果在处理消息时有任何可重试的失败,那么我希望我的Samza任务再次读取相同的消息并重新处理它。在成功处理消息后,确认它以进行检查点。

有没有办法手动控制检查点(就像Kafka Consumer提供的“手动偏移控制”一样,将enable.auto.commit设置为false:https://kafka.apache.org/0100/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html

我遇到了这个文档https://samza.apache.org/learn/documentation/0.13/jobs/reprocessing.html,它讨论了重新处理以前处理过的数据,但它没有提供任何基于确认的检查点控制。

发现相关问题https://github.com/zendesk/ruby-kafka/issues/304

1 个答案:

答案 0 :(得分:3)

西特,

您可以从StreamTask执行手动提交。如果将task.commit.ms设置为-1,则禁用Samza作业中的自动提交。在这种情况下,任务应该在您准备好确认时通过调用taskCoordinator.commit()来手动触发提交。

您可以在此处找到有关检查点的文档 - http://samza.apache.org/learn/documentation/0.13/container/checkpointing.html。 我认为网站中的文档不足,因为它没有详细介绍手动提交方案。还需要更新配置表,以便用户明白支持手动提交。

HTH :)