簡體   English   中英

我需要將數據保存在 mongodb 中,然后以原子方式將這些數據發送到 kafka

[英]I need to save data in mongodb and send this data to kafka all atomically

我有 spring 啟動應用程序,它將數據保存到 mongodb 並將此數據發送到 kafka。 我希望這兩個進程以原子方式運行。 這意味着如果數據被持久化到 mongo,那么它應該被發送到 kafka。 我該怎么做?

對於卡夫卡本身,你不能。

Kafka 提供transactions ,但它們僅限於以原子方式寫入 Kafka 中的多個分區。 它們在設計時考慮了 stream 處理,因此從一個主題消費並在一個 go 中生產另一個主題 - 但 Kafka 事務無法知道對 mongo 的寫入命令是否成功。

您擁有的用例是經常出現的東西。 通常你會使用發件箱模式 答案是只修改兩個資源之一(數據庫或Apache Kafka),並在此基礎上以最終一致的方式驅動第二個資源的更新。

如果您確實需要原子寫入,我相信可以通過依賴 Mongo >= 4.2 為您提供的 ACID 保證而不是 Kafka 的事務保證來做到這一點。 但這意味着您需要在 Mongo 中管理 Kafka 偏移量。

如果您有“Kafka 權威指南,第 2 版”,則有一小章詳細介紹了 Kafka 事務究竟能做什么和不能做什么以及可能的解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM