0

我们有 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

4

1 回答 1

3

席德,

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

您可以在此处找到有关检查点的文档 - http://samza.apache.org/learn/documentation/0.13/container/checkpointing.html。我认为网站中的文档不足,因为它没有详细涵盖手动提交场景。配置表也需要更新,以便用户清楚地知道支持手动提交。

HTH :)

于 2017-07-08T06:24:30.120 回答