分塊處理

Spring Batch 在其最常見的實現中使用了“面向分塊”的處理方式。面向分塊處理是指一次讀取一個數據,並建立在事務邊界內寫入的“分塊”。一旦讀取的專案數量達到提交間隔,整個分塊將由 ItemWriter 寫入,然後事務被提交。下圖顯示了該過程。

Chunk Oriented Processing
圖 1. 面向分塊處理

以下虛擬碼以簡化形式展示了相同的概念:

List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
    Object item = itemReader.read();
    if (item != null) {
        items.add(item);
    }
}
itemWriter.write(items);

您還可以使用可選的 ItemProcessor 配置一個面向分塊的步驟,以便在將專案傳遞給 ItemWriter 之前對其進行處理。下圖顯示了在步驟中註冊 ItemProcessor 時的處理過程。

Chunk Oriented Processing With Item Processor
圖 2. 帶專案處理器的面向分塊處理

以下虛擬碼以簡化形式展示了其實現方式:

List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
    Object item = itemReader.read();
    if (item != null) {
        items.add(item);
    }
}

List processedItems = new Arraylist();
for(Object item: items){
    Object processedItem = itemProcessor.process(item);
    if (processedItem != null) {
        processedItems.add(processedItem);
    }
}

itemWriter.write(processedItems);

有關專案處理器及其用例的更多詳細資訊,請參閱專案處理部分。

© . This site is unofficial and not affiliated with VMware.