2 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的自動(dòng)提交參數(shù)無(wú)關(guān)緊要,Spring 將管理事物并在它認(rèn)為合適時(shí)覆蓋它(它確實(shí)認(rèn)為合適)。
您可以設(shè)置提交間隔來(lái)定義您想要提交的頻率。
您是否應(yīng)該更改它完全取決于您打算如何批處理,您的執(zhí)行是否會(huì)失敗,是否應(yīng)該跳過(guò)或重試這些情況以及其他類似的事情。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
關(guān)于“什么時(shí)候提交?”的問(wèn)題,根據(jù)Spring Batch 文檔:
5.1 面向塊的處理
Spring Batch 在其最常見(jiàn)的實(shí)現(xiàn)中使用“面向塊的”處理風(fēng)格。面向塊的處理是指在事務(wù)邊界內(nèi)一次讀取一個(gè)數(shù)據(jù),并創(chuàng)建將被寫(xiě)出的“塊”。從 ItemReader 讀入一項(xiàng),交給 ItemProcessor 并聚合。一旦讀取的項(xiàng)數(shù)等于提交間隔,則通過(guò) ItemWriter 寫(xiě)出整個(gè)塊,然后提交事務(wù)。
下面是上述相同概念的代碼表示:
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);
因此,如果你打算使用 Spring Batch,你不應(yīng)該搞亂設(shè)置自動(dòng)提交,因?yàn)檫@是你應(yīng)該信任框架為你處理的事情。下面的部分顯示了如何配置的示例:
5.1.1 配置步驟
盡管 Step 所需的依賴項(xiàng)列表相對(duì)較短,但它是一個(gè)極其復(fù)雜的類,可能包含許多協(xié)作者。為了簡(jiǎn)化配置,可以使用 Spring Batch 命名空間:
<job id="sampleJob" job-repository="jobRepository">
<step id="step1">
<tasklet transaction-manager="transactionManager">
<chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
</tasklet>
</step>
</job>
上面的配置表示創(chuàng)建面向項(xiàng)目的步驟所需的唯一依賴項(xiàng):
reader - 提供待處理項(xiàng)目的 ItemReader。
writer - 處理 ItemReader 提供的項(xiàng)目的 ItemWriter。
事務(wù)管理器 - Spring 的 PlatformTransactionManager 將用于在處理期間開(kāi)始和提交事務(wù)。
job-repository - JobRepository 將用于在處理期間(就在提交之前)定期存儲(chǔ) StepExecution 和 ExecutionContext。對(duì)于內(nèi)聯(lián)(在 a 中定義的),它是元素上的一個(gè)屬性;對(duì)于獨(dú)立步驟,它被定義為 .
commit-interval - 在提交事務(wù)之前將處理的項(xiàng)目數(shù)。
添加回答
舉報(bào)