没测试过,如果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)."

回复