mongodb - 覆盖 Mongo 源连接器
问题描述
我将使用 Kafka 连接来使用来自 MongoDB 的消息并发布到 Kafka 主题中。
默认情况下,Mongo 源连接器为每个集合创建一个主题。但是我会有很多收藏,并且希望所有收藏只有一个主题。一条消息将具有集合名称。
- 覆盖 mongo-source 连接器是更好的方法吗?如果是这样,我应该记住什么
- 是否已经提供了任何设置?我知道
collection
在创建它时指定为空会监听所有集合。但它会为每个集合创建一个主题。
解决方案
正如@onecricketeer 建议的那样,我使用了RegexRouter。因此无需重写 mongo 源连接器即可将所有集合中的文档发布到同一主题中。
这是我的配置,它监听所有匹配管道的集合并发布到mongodbTopic
{
"name": "mongo-source",
"config": {
"tasks.max": "1",
"connector.class": "com.mongodb.kafka.connect.MongoSourceConnector",
"connection.uri": "<connection_uri>",
"topic.prefix": "",
"pipeline": "[{\"$match\": { \"$or\": [{\"fullDocument._kind\":\"collection\"},{\"fullDocument._isInverse\":false}],\"ns.coll\": {\"$regex\": /^(.*_related)$|^(my_collection_test)$/}}}]",
"poll.await.time.ms": 5,
"poll.max.batch.size": 2000,
"transforms": "dropPrefix",
"transforms.dropPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.dropPrefix.regex": ".*",
"transforms.dropPrefix.replacement": "mongodbTopic",
"errors.tolerance": "none",
"copy.existing": true
}
}
有关更多信息 https://docs.confluent.io/platform/current/connect/transforms/regexrouter.html
推荐阅读
- css - 我需要一个元素成为其他元素的子元素而不继承某些属性
- ssrs-2012 - SSRS 报表参数交互
- angular - 是否可以将 postgraphile 与 .net 核心一起使用?
- python - 如何使用 youtube data api 检查 creativecommons 视频?我有以下代码,如果视频是知识共享,如何打印 true?
- asp.net-mvc - 错误:无法将 lambda 表达式转换为类型“ServiceLifetime”,因为它不是委托类型
- java - Information_schema 未从 jooq for SQL Server 生成
- c++ - 为什么在使用链接时优化时没有捕获到这个抛出的对象?
- c# - 如何为枚举赋值?
- javascript - 过滤数组中 45,000 个条目的最快和最有效的方法是什么?
- javascript - 如何恢复 tab 键的正确功能并遍历所有表单输入?