我們有一個使用Spring Integration和Spring Batch的Spring Boot應用程序。我們在輪詢器中放置一個文件並處理它。該過程將記錄插入到數據庫中,然後將它們讀出來進行一些處理並寫入文件。假設有10條記錄。我們第一次讀取10條記錄並寫入10條記錄。在不停止服務器的情況下,我們通過數據庫上的SQL客戶端刪除所有記錄,再次運行相同的文件,我們得到10條記錄,其中20條記錄被讀取。我相信有一些JPA或緩存與數據源進行。我們已經嘗試關閉JPA和緩存的幾個自動配置選項,但是我們沒有找到正確的配置選項來關閉緩存。如何在SpringBoot下關閉SpringBatch的JPA
給問題增加一點細節。
基本上我們有cron調度器有一個FileHandler。這個handleFile方法我們有以下幾點。
public File handleFile(File file) throws Throwable {
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
Job job = (Job) appContext.getBean("processInitialFileJob");
JobExecution jb = jobLauncher.run(job, jobParametersBuilder.toJobParameters());
....
}
,我們可以做的代碼什麼上面,以確保它有一個新的JPA會話或者完全不使用JPA會議?這項工作需要每次從數據庫讀取,而不是數據庫的緩存表示。
我有一個預感是問題。有沒有辦法把它完全關閉?所以基本上,如果我在表上進行讀取操作,我希望它實際讀取表格而不是表格的緩存表示。 –