![](/img/trans.png)
[英]mongo db sink connector, kafka message key to mongodb document field
[英]How to group kafka topics in different dbs and collections with mongodb sink connector depending on kafka topic name or message key/value
正如標題所述,我正在使用 debezium Postgres 源連接器,並且我希望 MongoDB 接收器連接器根據其名稱將不同集合和數據庫中的 kafka 主題(也用於隔離不相關數據的不同數據庫)分組。 在查詢時,我在mongo docs遇到了topic.regex
連接器屬性。 不幸的是,這只會在 mongo 中為每個成功匹配指定 regex 的 kafka 主題創建一個集合,我計划使用相同的 mongodb 服務器來容納從多個 debezium 源連接器捕獲的許多 dbs 。 你能幫助我嗎?
注意:我閱讀了這個 mongo sink 設置FieldPathNamespaceMapper
,但我不確定它是否符合我的需要,也不確定如何正確配置它。
topics.regex
是一個通用的 sink 連接器,不是 Mongo 獨有的。
如果我正確理解了這個問題,顯然只有 collections 會在配置的數據庫中為實際存在的 Kafka 主題創建(匹配模式)並被接收器消耗。
如果您想要不匹配模式的 collections,那么您仍然需要使用它們,但需要在將記錄寫入 Mongo 之前通過 RegexRouter 轉換顯式重命名主題
在 kafka 中,worker 是可以運行多個連接器的簡單容器。 對於每個連接器,工作人員根據內部規則和您的配置生成任務。 因此,如果您查看 mongodb 接收器連接器配置:
您可以使用相同的 connection.uri、數據庫和集合或不同的值創建不同的連接器。 因此,您可以使用topics.regex 或topics 參數將單個連接器的主題與它自己的connection.uri、數據庫和集合進行分組,並同時運行多個連接器。 請記住,如果您的連接器中的 tasks.max > 1,則可能會亂序讀取消息。 如果這不是問題,請在 mongodb 分片數量旁邊設置一個 tasks.max 值。 工作人員會自動調整任務數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.