首页 > 解决方案 > 具有 Atomic Sink 功能的 Flink

问题描述

我不知道这是否可以通过 Flink API 来实现。

我有一份 Flink 工作,其中:

这可能会导致三种情况:

  1. MongoDB 保存成功,然后只发布到 Kafka。
  2. 如果 MongoDB 没有成功保存,则不要发布到 Kafka。
  3. 如果 MongoDB 成功保存但“发布到 Kafka”失败,则在 MongoDB 中回滚,即对 MongoDB 进行另一次更新以撤消先前的保存。

上面的第三种情况是我的问题所依据的。到目前为止,无论我研究过什么,似乎我都不能将 FlinkKafkaProducer 用作 Sink,因为那样我将无法控制上述原子性的逻辑。所以我决定在一个自定义的接收器函数中使用 KafkaProducer 的低级 api,我可以在其中编写我自己的逻辑,使 MongoDB 和 Kafka 发布为几乎是原子的。

这是正确的方法吗?或者 Flink 是否为此提供 API?

标签: mongodbapache-kafkaapache-flinkflink-streamingflink-cep

解决方案


推荐阅读