2017-10-13 79 views
1

我不明白計劃任務批處理作業之間的區別。 通過計劃任務我的意思是被配置像這樣的那些:春季計劃任務和春季批處理作業之間有什麼區別

@EnableScheduling 
public class AppConfig{ 
.. 

和像

@Scheduled(fixedRate=550) 
public void doSomething(){ 
.. 

使用批處理作業我的意思是這些:

@EnableBatchProcessing 
public class AppConfig{ 
.. 

和許多類似的實現: 工作工作發射器,個步驟ItemReaderItemWriter ...等

我想知道除了實現差異它們之間的主要區別,也是我很好奇爲什麼要使用批處理作業並進行了大量長期實現同時我們可以使用簡單的計劃任務。我的意思是執行預定的工作很容易,但根據批處理工作,他們可能有缺點?

+1

看看我的回答https://stackoverflow.com/questions/33188368/spring-batch-vs-quartz-jobs這是石英,但基本上Quartz有一個類似的概念,@Scheduled,只是更強大。 –

+0

它不應該只是Quartz,因爲在Spring引導中也有一個Quartz調度器,即使如此我想知道批處理作業和石英調度器之間的區別。 – wertigom

+0

我知道的兩個方面:afaik當一個工作運行失敗時,在2.運行時,它將以相同的工作參數運行..至少你可以配置這個我認爲。以及這種錯誤情況,您可以比手動將代碼全部寫入同一位置(您的預定方法)更容易進行配置。其次,也許批處理爲你的代碼提供了一個結構,當你還必須從某個地方讀取你的數據,並寫入某處時......批處理有某種讀取器,處理器,寫入器模式。還有一些數據庫表和自動創建的批處理作業結果..喜歡當工作開始等... – akcasoy

回答

0

我可以想到的2個方面:afaik當一個工作運行失敗時,在2.運行時,它將以相同的工作參數運行..至少你可以配置這個我認爲。以及這種錯誤情況,您可以比手動將代碼全部寫入同一位置(您的預定方法)更容易進行配置。其次,也許批處理爲你的代碼提供了一個結構,當你還必須從某個地方讀取你的數據,並寫入某處...批處理有某種讀取器,處理器,寫入器模式。還有一些自動創建的數據庫表(BATCH_JOB_INSTANCE)和批處理作業結果..就像作業開始等...

編輯:更多批處理原因:大量的數據,事務管理,基於塊的處理,聲明性I/O,開始/停止/重新啓動,重試/跳過,基於Web的管理界面。

0

Spring Scheduler用於根據計劃編排某些東西。 Spring Batch是一個強大的批處理框架,用於構建複雜的計算問題。 Spring Batch不處理工作的編排,只是建立它們。如果需要,可以使用Spring Scheduler編排Spring批處理作業。