关于Kafka Connect(spooldir)添加自定义键及多文件处理顺序的问询
Kafka Connect Spooldir 常见问题解答
1. 能否为同一文件的消息添加自定义键(如文件名)标记来源?
完全可以,分两种场景实现:
- 仅在消息值中标记文件名:直接配置连接器的
filename.field参数,指定一个字段名(例如source_filename),连接器会自动将当前处理的文件名插入到每条消息的value对应字段中。 - 将文件名设为消息键:借助Kafka Connect的
InsertField转换器,把文件名插入到消息的键结构中。示例配置片段:
transforms=addFileKey transforms.addFileKey.type=org.apache.kafka.connect.transforms.InsertField$Key transforms.addFileKey.field=filename # 需启用filename.field确保连接器能获取文件名变量 filename.field=source_filename
配置后,每条消息的键会包含filename字段,值为当前处理的文件名。
2. 未处理目录存在多个文件时,是否会逐个处理且不混合消息?
默认情况下是串行逐个处理,主题流中不会混合不同文件的消息。
Spooldir连接器默认按文件的修改时间排序(可通过file.sort.order配置改为按文件名排序),处理完一个文件后(会将文件移动到已处理目录,或根据cleanup.policy配置进行标记/删除),才会启动下一个文件的处理。即便修改file.max.wait.ms参数让连接器提前处理新文件,同一文件的消息也会连续出现在主题中,不同文件的消息只会按处理顺序分段出现,不会出现消息交叉混合的情况。
内容的提问来源于stack exchange,提问作者AndCode
相关产品推荐
相关产品推荐

