如果我使用大型任务配置,我的 Kafka 源连接器 https://github.com/JeffersonLab/epics2kafka 会启动,但不会创建任何任务。使用较小的配置似乎可以解决问题。如果我将我的配置移动到一个文件中并仅传递文件路径以供任务使用,那也可以使用(尽管不再像现在依赖本地文件那样扩展到分布式节点!)。似乎我遇到了内存限制或内部 REST 服务发布大小限制,或某种连接主题限制。奇怪的是似乎没有记录任何错误。连接器状态为“RUNNING”,但任务状态为空数组。使用打印调试语句,我可以看到 taskConfigs() 方法始终完成,但如果使用大型配置,则永远不会调用 Connect 任务的 start() 方法。大型 taskConfigs 是 25,500 行 JSON(约 2.5MB),添加到 https://javadoc.io/doc/org.apache.kafka/connect-api/latest/org/apache/kafka/connect/connector/Connector.html#taskConfigs-int- 中。
类似(但不同):https://stackoverflow.com/questions/64258567/kafka-connectors-task-list-is-empty
我使用的是 Kafka 的 3.1.0 版本,所以我认为上述问题是不同的(看起来该问题是由于内部 REST Post 请求的 URL 编码造成的)。
回答1
有一个生产者请求大小限制(对于由 Kafka Connect 内部用于编写任务配置的生产者)和一个主题消息大小限制(对于用于 store Connect 配置的主题)必须增加。我通过将 max.request.size=5242880
添加到 connect-distributed.properties
和 max.message.bytes=5242880
到主题 connect-configs
的主题配置,将它们增加到 5MB。
请参阅:https://lists.apache.org/thread/g71txnygpgxw672txl7mnb3dryz7h44x