再會
我對 Apache Nifi 相當陌生,我在 Nifi 中的一些基本邏輯(盡管我曾經擔任過軟體開發人員)方面遇到了困難。據我了解,Nifi 的流檔案始終是一個帶有元資料(屬性)的“物理”檔案(有效負載/內容)。
我如何保證一個檔案對(屬于彼此的兩個檔案)以定義的順序復制到另一個位置?
情況如下:
- 系統 A 在檔案夾 X 中生成未知數量的“配對檔案”(由 1x XML 和 1x PDF 同名)。生成 PDF 檔案需要更長的時間。
- Nifi 應該從系統 A/檔案夾 X 中獲取檔案,然后首先將 PDF 移動到系統 B/檔案夾 Y
- 確保 PDF 已到達目的地后,將 XML 移動到系統 B/檔案夾 Y
系統 B 有一個檔案夾偵聽器,它進一步處理 xml pdf,如果 xml 在 pdf 之前存在,則會導致錯誤 - 這部分無法更改
我目前的方法不起作用,我明白為什么,但我找不到如何解決相應檔案問題的解決方案。
- ListFile(根據 XML 過濾)
- 獲取檔案(
${absolute.path}/${filename}) - 獲取檔案(
${absolute.path}/${filename:substringBeforeLast('.'):append('.pdf')})- 如果失敗,請使用RetryFlowFile重試 X 次
- RouteOnAttribute (
${filename:toLower():endsWith('pdf')}) <-- 這里失敗,檔案是 xml - 放置檔案(pdf)
- 如果失敗則中止
- 獲取檔案(
${absolute.path}/${filename}) - 路由屬性(
${filename:toLower():endsWith('xml')}) - 放置檔案(xml)
長話短說。我相信我這樣做完全錯誤,我需要一些建議(不是解決方案;))
uj5u.com熱心網友回復:
為什么要先獲取 xml 檔案?如果您只想在 pdf 存在時移動檔案,則只需檢查 pdf 何時出現,然后移動檔案。
您可以執行以下操作:
- Getfile(當它出現在檔案夾 X 中時獲取 pdf)
- Putfile(將 pdf 放入檔案夾 Y)
- UpdateAttribute(將檔案名從 .pdf 更新為 .xml)
- FetchFile 將 xml 檔案移動到檔案夾 Y。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/444237.html
