kafka是有拒绝超时事务提交机制的 Michael Ran <[email protected]> 于2021年12月31日周五 14:40写道:
> 没测试过,如果kafka 确定自身会丢掉超时事务消息的前提下,比如10分钟超时丢消息。<br/>1.flink > 发送消息A,进入第一阶段。<br/>2.flink 等待kafka 消息一阶段 ack信息 <br/>3.flink > 收到ack消息,发送二阶段确认消息,并进行chk <br/> 异常: > 这个时候flink第二阶段消息确认,发送失败(同时flink应用因为各种原因挂了,超过10分钟)<br/>3.1 10分钟后,kakfa > 丢弃事务超时的消息<br/>3.2 flink 重启,重新提交二阶段的事务id (但是由于kakfa > 消息已经丢了,提交无效)<br/><br/>猜测:当二阶段commit失败的时候,是否根据重发消息来解决?同时引入幂等保证 > 在 2021-12-31 11:31:49,"zilong xiao" <[email protected]> 写道: > >看官方文档中有介绍说当kafka事务超时时,可能会出现数据丢失的情况,那就是说,Flink没办法完全保证端到端exactly > >once是么?想请教下社区大佬,我这么理解是正确的吗?一直都听说Flink 写kafka是可以保证端到端exactly > once的,看到文档描述有点懵 > > > >文档地址: > > > https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/kafka/#kafka-producers-and-fault-tolerance > > > >关键字:"If the time between Flink application crash and completed restart is > >larger than Kafka’s transaction timeout there will be data loss (Kafka > will > >automatically abort transactions that exceeded timeout time)." >
