如何区分单个INPUT中FlowFile的不同获取来源?
NiFi FlowFile来源区分与路由方案
核心方案:为不同来源的FlowFile添加自定义标识属性
NiFi没有默认属性能直接区分这些获取场景,所以最可靠的方式是在每个生成/获取FlowFile的环节,主动给FlowFile打上自定义属性,后续通过属性判断实现路由分流。
具体配置步骤
GenerateFlowFile处理器:在属性面板添加自定义属性,例如source_type=generated- GetFile单文件场景:配置GetFile监听单个文件路径,同时添加属性
source_type=getfile_single - GetFile单压缩文件场景:配置GetFile监听单个压缩文件路径,添加属性
source_type=getfile_compressed - GetFile目录批量文件场景:配置GetFile监听目标目录,添加属性
source_type=getfile_directory - HTTPS接收FlowFile场景:在
HandleHTTPRequest(或对应接收处理器)中添加属性source_type=https_received
路由逻辑实现
使用RouteOnAttribute处理器,基于source_type属性设置路由规则:
- 规则名称:
to_file_management,匹配条件:${source_type:equals('getfile_compressed')} OR ${source_type:equals('getfile_directory')},匹配后将FlowFile导向服务器文件管理流程 - 规则名称:
direct_to_solr,匹配条件:${source_type:notEquals('getfile_compressed')} AND ${source_type:notEquals('getfile_directory')},匹配后直接发送至Solr
补充优化:压缩文件自动校验
如果担心手动标注压缩文件属性出错,可以搭配DetectFileMimeType处理器获取文件MIME类型,通过判断mime.type属性是否为压缩类型(如application/zip、application/gzip),和source_type组合校验,进一步提升准确性。
内容的提问来源于stack exchange,提问作者edjm
相关产品推荐
相关产品推荐

