簡體   English   中英

Apache Camel:等待一組文件,然后作為批處理

[英]Apache Camel: Wait for a group of files and then process as batch

我正在尋找有關如何建立駱駝路線的建議。 基本上,我需要等待給定的文件列表被創建,然后將它們作為一個單元一起處理。 這是我的情況:

  1. 一個外部進程將request-manifest.xml生成為Incoming/Requests 該文件列出了一組將作為一個單元處理的文件。
  2. 此后的某個時間,這些文件由另一個外部過程生成為“ Incoming/Parts 這些文件是並行創建的,因此可以在任何時候以任何順序顯示,但通常彼此之間只有幾分鍾。
  3. 然后將整個批次作為一個單元進行處理(例如,壓縮並通過FTP傳輸,復制到其他位置等)

從概念上講,我制定了兩種可能的方法:

  1. 將清單轉換並拆分為單獨的ManifestItem,然后將每個ManifestItem並行進行充實,然后將它們重新合並為一個完整的Batch。
  2. 輪詢Incoming/Parts並使用其批號豐富每個文件消息,然后將它們聚合為一個完整的批處理

第一種方法使用了組合消息處理器模式,盡管我不確定如何讓ManifestItems擴充功能並行等待,而且我不知道如果系統正在等待數百或數千個文件,它是否可以很好地擴展。 從概念上講,這似乎更簡單,只需一條路線。

第二種方法是更多事件驅動的(即使文件端點輪詢了,它也將其抽象了出來),但似乎更加復雜。 它有兩條路線,一條處理清單,一條處理零件,並且似乎需要一些臨時存儲(內存中的數據庫?),用於存儲傳入請求上的數據,以便將每個文件與其批處理關聯起來。出現。

這些似乎都不錯的方法嗎? 做這種事情的最“ Cameline”方法是什么?

如果您可以控制外部應用程序,則可以讓他們在完成所需文件的生成后生成第3個文件。 然后,您可以使用選項doneFileName開始處理文件。 請參閱文件組件的Camel Docs-這些選項對於ftp組件也有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM