在Flink中手动提交Kafka偏移

时间:2019-02-08 03:46:55

标签: apache-flink flink-streaming

在从Kafka接收消息的Flink流应用程序中, 1)如何禁用自动提交? 2)成功处理邮件后,如何从Flink手动提交?

谢谢。

1 个答案:

答案 0 :(得分:2)

通过default Flink在检查点上提交偏移量。您可以按以下方式禁用它:

val consumer = new FlinkKafkaConsumer011[T](...)
c.setCommitOffsetsOnCheckpoints(false)

如果您未启用检查点,请参见here

您为什么要这么做? Flink的检查点机制可以为您解决此问题。如果出现故障,Flink不会提交偏移量。如果您在Kafka使用者下游的某个位置抛出异常,则Flink将尝试从先前成功的检查点重新启动流。如果错误仍然存​​在,则Flink将在流失败之前重复启动已配置的次数。 这意味着您不太可能由于Flink提交代码未成功处理的消息的偏移而丢失消息。