mongodb - 具有 Atomic Sink 功能的 Flink
问题描述
我不知道这是否可以通过 Flink API 来实现。
我有一份 Flink 工作,其中:
- polls MongoDB(自定义源函数)
- 做了一些转变
- 然后以原子方式持久保存在 MongoDB(sink-1) 中并发布到 Kafka(sink-2)
这可能会导致三种情况:
- MongoDB 保存成功,然后只发布到 Kafka。
- 如果 MongoDB 没有成功保存,则不要发布到 Kafka。
- 如果 MongoDB 成功保存但“发布到 Kafka”失败,则在 MongoDB 中回滚,即对 MongoDB 进行另一次更新以撤消先前的保存。
上面的第三种情况是我的问题所依据的。到目前为止,无论我研究过什么,似乎我都不能将 FlinkKafkaProducer 用作 Sink,因为那样我将无法控制上述原子性的逻辑。所以我决定在一个自定义的接收器函数中使用 KafkaProducer 的低级 api,我可以在其中编写我自己的逻辑,使 MongoDB 和 Kafka 发布为几乎是原子的。
这是正确的方法吗?或者 Flink 是否为此提供 API?
解决方案
推荐阅读
- linked-list - 从未排序的链表中删除重复项 ::为什么此代码显示分段错误
- python - 从 Pandas 时间戳列中提取年/月并将其存储在两个新列中
- c - 验证 XML 文档无法加载使用原始 XSD 文档中的相对路径引用的架构
- c# - 使用 Response.Redirect 时如何删除段 URL
- php - 在 HTTP/2 更新后解析 HTML 文件中的 PHP 不起作用
- angular - 在 Linux 中无法从 Github Repo 中找到模块
- android - 将图像导入数据库
- python - Django - 注册时未收到消息
- python - 我正在尝试使用 RFC 为分类问题导入图像数据集,当我尝试创建数据集时,我遇到了索引问题
- python - 如何模拟 python 单元测试的 msal 框架