Flink via the <code>TwoPhaseCommitSinkFunction</code>.</p>
<center>
<img src="/img/blog/eo-post-graphic-1.png" width="600px" alt="A sample Flink application"/>
</center>
<p>In the sample Flink application that we&rsquo;ll discuss today, we have:</p>
<ul>
<li>A data source that reads from Kafka (in Flink, a <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/dev/connectors/kafka.html#kafka-consumer">KafkaConsumer</a>)</li>
<li>A windowed aggregation</li>
<li>A data sink that writes data back to Kafk