Nifi - 在两个文件夹之间移动一对文件
Nifi - Moving a pair of files between two folders
美好的一天
我是 Apache Nifi 的新手,我对 Nifi 中的一些基本逻辑有困难(尽管我曾经担任过软件开发人员)。据我了解,Nifi 的流文件始终是一个“物理”文件(payload/content)及其元数据(属性)。
我如何保证文件对(两个属于彼此的文件)按照定义的顺序复制到另一个位置?
情况如下:
- 系统 A 生成数量未知的“配对文件”(包括
文件夹 X 中的 1x XML 和 1x 同名 PDF)。PDF 文件需要
抽动时间更长。
- Nifi 应该从系统 A/Folder X 中获取文件,然后首先将 PDF 移动到系统 B/Folder Y
- 确保 PDF 已到达目的地后,将 XML 移动到系统 B/Folder Y
系统 B 有一个文件夹侦听器,它进一步处理 xml+pdf,如果 xml 在 pdf 之前存在,将会导致错误 - 这部分无法更改
我目前的方法行不通,我明白为什么,但我无法找到如何使用相应文件解决我的问题的解决方案。
- ListFile(在 XML 上过滤)
- FetchFile (
${absolute.path}/${filename}
)
- FetchFile (
${absolute.path}/${filename:substringBeforeLast('.'):append('.pdf')}
)
- 如果失败,使用 RetryFlowFile
重试 X 次
- RouteOnAttribute (
${filename:toLower():endsWith('pdf')}
) <-- 这里失败了,文件是 xml
- PutFile (pdf)
- 失败则中止
- FetchFile (
${absolute.path}/${filename}
)
- RouteOnAttribute (
${filename:toLower():endsWith('xml')}
)
- PutFile (xml)
长话短说。我相信我这样做是完全错误的,我需要一些建议(不是解决方案;))
为什么要先获取 xml 文件?如果您只想在 pdf 出现时移动您的文件,您只需检查 pdf 何时出现,然后移动您的文件。
您可以执行以下操作:
- Getfile(获取出现在文件夹 X 中的 pdf)
- Putfile(将pdf放入文件夹Y)
- UpdateAttribute(将文件名从 .pdf 更新为 .xml)
- FetchFile 将 xml 文件移动到文件夹 Y。
美好的一天
我是 Apache Nifi 的新手,我对 Nifi 中的一些基本逻辑有困难(尽管我曾经担任过软件开发人员)。据我了解,Nifi 的流文件始终是一个“物理”文件(payload/content)及其元数据(属性)。
我如何保证文件对(两个属于彼此的文件)按照定义的顺序复制到另一个位置?
情况如下:
- 系统 A 生成数量未知的“配对文件”(包括 文件夹 X 中的 1x XML 和 1x 同名 PDF)。PDF 文件需要 抽动时间更长。
- Nifi 应该从系统 A/Folder X 中获取文件,然后首先将 PDF 移动到系统 B/Folder Y
- 确保 PDF 已到达目的地后,将 XML 移动到系统 B/Folder Y
系统 B 有一个文件夹侦听器,它进一步处理 xml+pdf,如果 xml 在 pdf 之前存在,将会导致错误 - 这部分无法更改
我目前的方法行不通,我明白为什么,但我无法找到如何使用相应文件解决我的问题的解决方案。
- ListFile(在 XML 上过滤)
- FetchFile (
${absolute.path}/${filename}
) - FetchFile (
${absolute.path}/${filename:substringBeforeLast('.'):append('.pdf')}
)- 如果失败,使用 RetryFlowFile 重试 X 次
- RouteOnAttribute (
${filename:toLower():endsWith('pdf')}
) <-- 这里失败了,文件是 xml - PutFile (pdf)
- 失败则中止
- FetchFile (
${absolute.path}/${filename}
) - RouteOnAttribute (
${filename:toLower():endsWith('xml')}
) - PutFile (xml)
长话短说。我相信我这样做是完全错误的,我需要一些建议(不是解决方案;))
为什么要先获取 xml 文件?如果您只想在 pdf 出现时移动您的文件,您只需检查 pdf 何时出现,然后移动您的文件。
您可以执行以下操作:
- Getfile(获取出现在文件夹 X 中的 pdf)
- Putfile(将pdf放入文件夹Y)
- UpdateAttribute(将文件名从 .pdf 更新为 .xml)
- FetchFile 将 xml 文件移动到文件夹 Y。