2012-07-11 103 views
0

高級要求如下: 我有一個輸入表(INPUT),我應該從中讀取數據,將它發送到外部服務進行驗證,並更新輸出表中的驗證響應。基於各種樣本,我已經實施了這一個。彈簧批量策略

但是,輸入表是扁平結構。即,例如:一張學生表,其中有一張表中的學生有多個考試成績。當我發送它進行驗證時,我必須檢索學生的所有記錄並將其發送給驗證。 另一個問題是並行處理。打到外部服務將有一些網絡延遲,我們希望進行並行處理以進行讀取,處理和寫入,或進行處理和寫入。

我想知道可行的讀者,作家和加工者在哪裏可以做到。

請幫幫我。

回答

0

我建議你創建一個讀取器,它將從表中讀取你的數據。產生的單個元素(在我的其他解釋中命名爲E)必須能夠發送給您的驗證服務。

然後編寫一個具有前面參數E的處理器。它調用您的驗證服務。驗證結果將是您的處理器(名爲O)的輸出。

最後,創建一個Writer,它將O作爲參數,其作用是將最終數據寫入數據庫。

並行處理將通過彈簧配置完成,使用ThreadPoolTaskExecutor。重要的部分是以線程安全的方式編寫您的Reader,Processor和Writer。

爲了更好的表演,你還應該檢查參數提交間隔(在作家),如果你使用Hibernate,檢查其批處理能力(我通常會找到這樣做的25批次插入/更新的最佳性能-30個請求)。