在从Kafka接收消息的Flink流应用程序中, 1)如何禁用自动提交? 2)成功处理邮件后,如何从Flink手动提交?
谢谢。
答案 0 :(得分:2)
通过default Flink在检查点上提交偏移量。您可以按以下方式禁用它:
val consumer = new FlinkKafkaConsumer011[T](...)
c.setCommitOffsetsOnCheckpoints(false)
如果您未启用检查点,请参见here
您为什么要这么做? Flink的检查点机制可以为您解决此问题。如果出现故障,Flink不会提交偏移量。如果您在Kafka使用者下游的某个位置抛出异常,则Flink将尝试从先前成功的检查点重新启动流。如果错误仍然存在,则Flink将在流失败之前重复启动已配置的次数。 这意味着您不太可能由于Flink提交代码未成功处理的消息的偏移而丢失消息。