2014-12-05 50 views
0

我正在研究一個項目,我們需要解析大小> 2GB的文件並將數據加載到數據庫中。我打算使用駱駝分割器將文件分解成50個不同的文件,然後使用Apache Camel處理每個文件。駱駝負載平衡和故障轉移處理

我的問題是:

如果在處理文件之一,駱駝路線失敗,那麼我怎麼能停止與文件名駱駝航線和審計這DB。可能會發生這樣的情況:某些記錄已處理並上載到數據庫,並且特定記錄無法在數據庫中加載。所以我們需要在其他文件中記錄這個特定的記錄。

同樣在處理時,如果由於網絡故障DB操作而導致的支持被停止,那麼在這種情況下文件處理是不完整的。那麼如何處理這個不完整的文件處理場景,因爲只有剩餘的記錄應該被再次處理。

+0

也許你最好應該使用批處理框架,比如Spring Batch(也可以集成到Camel中)。 – 2014-12-07 14:20:11

回答

1

由於您打算分割傳入文件,我假設您的記錄沒有相互依賴關係。

而不是將大文件分割成多個文件,然後在嘗試保留原始文件的某些上下文時處理它們,您可以使用分隔線逐行拆分大輸入文件。分流器可以在流模式下使用,以不首先將大輸入文件加載到內存中。然後將每一行放在SEDA /消息隊列中。在接收端使用併發消費者進行並行處理。

文件組件用當前處理的文件名設置交換頭。標題應該在分割和傳輸過程中保留。如果其中一個使用者失敗,則消費路由的錯誤處理程序應該具有用於​​記錄目的的源文件名的信息。儘管一封郵件可能失敗了處理,但您的客戶仍將繼續處理郵件。所以沒有必要弄清楚在哪裏接受處理。

相關問題