具有多个任务的分布式官方 Mongodb Kafka 源连接器不工作

Distributed Official Mongodb Kafka Source Connector with Multiple tasks Not working

我是 运行 Apache Kafka 在我的 Windows 机器上有两个 Kafka-Connect-Worker(端口 8083、8084)和一个具有三个分区的主题(一个复制)。 我的问题是,每当我关闭其中一个时,我都能看到故障转移到其他 Kafka-Connect worker,但负载平衡没有发生,因为任务数始终是一个。 我使用官方 MongoDB-Kafka-Connector 作为 Source(ChangeStream),tasks.max=6。 我尝试使用多个线程更新 MongoDB,以便它可以将更多数据推送到 Kafka-Connect 中,并可能使 Kafka-Connect 创建更多任务。即使在更高的数据量下,任务计数仍然是一个。

我怎么确认只有一个任务是运行?那是通过 api "http://localhost:8083/connectors/mongodb-connector/status" : 回复: { "name":"mongodb-connector", "connector": { "state":"RUNNING", "worker_id":"xx.xx.xx.xx:8083" } "tasks": [ { "id": 0, "state": "RUNNING" "worker_id": "xx.xx.xx.xx:8083" } ], "type": "source" } 我在这里错过了什么吗?为什么没有创建更多任务?

这似乎是官方 MongoDB Kafka Source Connector 的行为。这是我在 Ross Lawley(MongoDB 开发者)的另一个论坛上得到的答案:

在 1.2.0 之前,接收器连接器仅支持单个任务。 Source 连接器仍然只支持单个任务,这是因为它使用单个 Change Stream 游标。这足以观察和发布集群范围、数据库范围或向下到单个集合的更改。

我提出了这张票:https://jira.mongodb.org/browse/KAFKA-121 得到以下回应: 源连接器只会产生一个任务。 这是设计使然,因为源连接器由更改流支持。更改流在内部使用与复制引擎使用的相同数据,因此应该能够像数据库一样进行扩展。 没有计划允许多个游标,但是,如果您觉得这不能满足您的要求,那么您可以配置多个连接器,每个连接器都有自己的更改流游标。