有很多示例使用FlatFileItemReader
以及TaskExecutor
。我提供樣品下方(包括XML和Java的配置):使用FlatFileItemReader和TaskExecutor(線程安全)
我已經與大的CSV寫作與XML配置(GB大小),數據庫用它我的自我開箱即用的JpaItemWriter
。即使沒有設置save-state = false或進行任何特殊處理,似乎也沒有問題。
現在,FlatFileItemReader
記錄爲爲非線程安全的。
我的猜測是JpaItemWriter
通過持續集合來「覆蓋」問題,即如果hashCode()
和equals()
覆蓋了實體的業務密鑰,則集合沒有重複。但是,即使如此,僅僅通過非線程安全的讀取和處理來防止重複是不夠的。
請您澄清一下:在已分配TaskExecutor的Tasklet中使用開箱即用的FlatFileItemReader
是否正確/正確/安全?無論作家如何。如果不是,我們如何在理論上解釋當使用JPAItemWriter
時沒有錯誤?
PS:這個例子鏈接,我上面給,使用FlatFileItemReader
用的TaskExecutor沒有在所有可能的線程安全問題提...
我可能是錯的,但你問''FlatFileItemReader'不是'JpaItemWriter'是線程安全的嗎? – CKing
我的問題更一般。我提供了2個鏈接,其中一個FlatFileItemReader與TaskExecutor和不同的Writer一起使用,沒有任何特殊的線程安全處理。此外,我提供了自己的經驗,並試圖給出理論上的解釋,說明JpaItemWriter在某些情況下如何「隱藏」問題。所以換句話說,我的問題是:我們應該如何正確使用它,如果最終能夠按照原樣使用TaskExecutor。 – kmandalas
你的意思是'JpaItemReader'或'JpaItemWriter'? –