如果我使用大型任务配置,我的Kafka源连接器epics2kafka启动,但没有创建任务。使用较小的配置似乎可以纠正这个问题。如果我将配置移动到一个文件中,并只传递文件路径供任务使用,这也可以工作(尽管不再像现在依赖于本地文件那样扩展到分布式节点!)。似乎我遇到了内存限制或内部REST服务Post大小约束,或某种类型的连接主题约束。奇怪的是,似乎没有任何错误记录。连接器状态为"RUNNING",但任务状态为空数组。使用打印调试语句,我可以看到taskConfigs()方法总是完成,但如果使用大配置,则永远不会调用Connect任务的start()方法。大的taskConfigs是25,500行JSON(约2.5MB),它被添加到taskConfigs Map中。
相似(但不同):Kafka Connector's任务列表为空
我使用的是3.1.0版本的Kafka,所以我假设上面提到的问题是不同的(看起来这个问题是由于内部REST Post请求的URL编码)。
必须增加生产者请求大小限制(对于Kafka Connect内部用于写任务配置的生产者)和主题消息大小限制(对于用于存储Connect配置的主题)。我将max.request.size=5242880
添加到connect-distributed.properties
,并将max.message.bytes=5242880
添加到主题connect-configs
的主题配置,从而将它们增加到5MB。
参见:Kafka Users Discussion