1.概述
当 Kafka Sink 遇到 Kafka 宕机或连接中断的情况时,Flink 的 Kafka Sink 会根据配置的失败处理语义来处理未发送成功的数据。Flink 提供了三种不同的失败处理语义:
-
Fail on Error(默认选项)
:如果 Kafka 发送失败,Flink 会将错误抛出给上游操作符,并触发任务失败。这意味着未发送成功的数据会被丢弃。 -
Fail on Write
:如果 Kafka 发送失败,但是上游操作符已经成功处理了数据,Flink 会将错误抛出给上游操作符,并触发任务失败。这也意味着未发送成功的数据会被丢弃。 -
Ignore
:无论 Kafka 发送是否成功,Flink 将忽略发送错误,并继续处理后续数据。这种情况下,未发送成功的数据将会被丢弃,并且任务不会失败。
你可以根据具体的需求和业务场景选择合适的失败处理语义。默认情况下,Flink 会使用 Fail on Error 失败处理语义,确保数据发送的可靠性,但这可能会导致任务失败
。如果你更关注任务的持续运行,而不是数据的完整性,可以选择其他的失败处理语义。
2.配置
要配置 Flink 的 Kafka Sink 的失败处理语义,你可以在创建 Kafka Sink 时使用 setLogFailuresOn