我在作者身上使用了重試彈簧批處理。筆者是這樣的:在彈簧批量寫入器上重試
public class MyWriter implements ItemWriter<MyClass> {
@Retryable(maxAttempts=3, [email protected](delay=2000))
public void write(List<? extends MyClass> list) throws Exception {
// db operation 1 -- insert query
// some business logic
// db operation 2 -- update query
}
}
如果在「DB操作2」,重試異常被稱爲和執行從「DB操作1」再次啓動預期。但是'數據庫操作1'是一個插入查詢,並且這次拋出一個異常,因爲它試圖再次插入相同的記錄(並且DB上的唯一約束失敗)。最終,批次在3次嘗試後失敗,此步驟中沒有任何內容被提交到數據庫。
'db操作1'不應該在重試之前回滾/刷新?這是預期的行爲還是執行有問題?
我使用的是Spring引導應用程序和spring jdbc。
這有幫助..謝謝! – Sakshi