在Spring Batch的documentation上,爲了配置一個步驟,清晰的圖片描述瞭如何執行讀取過程和寫入。有關面向塊的步驟與現實的Spring批處理文檔?
read
process
...
read
process
// until #amountOfReadsAndProcesses = commit interval
write
通訊(根據DOC):
List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
Object item = itemReader.read()
Object processedItem = itemProcessor.process(item);
items.add(processedItem);
}
itemWriter.write(items);
然而,當我調試,並把一個斷點在讀取器的讀取方法和在我看到的,處理器的處理方法的斷點以下行爲:
read
...
read
// until #amountOfReads = commit interval
process
...
process
// until #amountOfProcesses = commit interval
write
那麼文檔是否錯誤?還是我錯過了一些配置,使其行爲像文檔(沒有發現任何東西)。
我遇到的問題是每個後續讀取都取決於處理器的狀態。讀取器是一個組合,它可以並行讀取兩個源,具體取決於其中一個源中的讀取項目,在一次讀取操作期間只讀取第一個,第二個或兩個源。但是在處理器中讀取哪些源的狀態。目前唯一的解決方案是提交間隔1,這對於性能來說並不是最優的。
你可以試試它與自定義閱讀器,它包裝標準的閱讀器和你的自定義邏輯 – 2014-10-30 15:37:43
是的我想過,但它不符合一批的模型。讀者不負責創建輸出。 – Juru 2014-10-31 06:37:19
我會嘗試與源數據庫表(第一批導入),並閱讀數據與適當的SQL(第二批業務處理) – 2014-10-31 11:13:08