2012-12-23 77 views
1

此場景的解決方案 - 提交間隔爲10,跳過限制爲10,總輸入記錄爲20,前9個記錄有效,保持無效。彈簧批處理 - 提交間隔和跳過限制

當9條記錄已被讀取時,第10條無效。塊大小爲10,跳過限制爲10,那麼Spring批處理將這9個記錄寫入輸出文件中? 如果不是,如果它繼續讀取剩餘記錄,當它讀取第20條記錄時,錯誤記錄的計數將是11,並且跳過限制定義爲10.因此該過程將立即停止。首先閱讀有效記錄的命運如何。

是否將前9條記錄寫入輸出文件中?

請讓我知道,如果有任何解決方案可用。謝謝!

+0

好question.I認爲,如果一個項目的作家未能提交塊(這裏10個項目),從而導致回滾。 http://stackoverflow.com/questions/11429197/commit-interval-in-spring-batch-and-dealing-with-rollbacks – Sajith

+1

你問一個「解決方案」,但你還沒有真正指出一個問題。你是否注意到前面的9條記錄在輸出中找不到*(如果我理解了你的場景,它們應該是)? –

回答

1

有多種可能的結果。您必須具體說明無效記錄。

它們是無效的讀取:在這種情況下,SB將只調用ItemReader的下一個值(不回滾)。所以你會以跳過限制異常結束,因爲11條記錄被發現無效。

它們是否是無效的寫入:在這種情況下,SB將在提交間隔爲1時重做第一個塊,直到找到壞記錄爲止。在這種情況下,您應該找到數據庫中的前9條記錄。

問候

1

對於這種情況 - 提交間隔爲10,跳過限制爲10,總輸入記錄是20,第9條有效,其餘無效。

當9條記錄已被讀取時,第10條無效。塊大小爲10,跳過限制爲10,那麼Spring批處理將這9個記錄寫入輸出文件。

回答 - SB會跳過第10條無效記錄並讀取第11條記錄,然後會得到寫入者寫入正確的第10條記錄,並且只有一條記錄無效跳過數爲1。

樣本配置 -