Spring Batch 2將支持工作劃分和基于注解的配置
這一版本的新特性可以分為四類:對(duì)Java 5的支持、非順序執(zhí)行、增強(qiáng)的可伸縮性以及注解。
對(duì)Java 5的支持:
Spring Batch 2.0版支持Java 5泛型和參數(shù)化類型,以便可以在編譯時(shí)檢查類型安全性。例如,ItemReader接口現(xiàn)在有了一個(gè)類型安全的read方法。
非順序執(zhí)行:
這其實(shí)包括3個(gè)新特性——條件、暫停和并行執(zhí)行。憑借這些特性,各步驟可以按非線性順序執(zhí)行。即使工作(Job)中的某個(gè)步驟(step)失敗,整個(gè)工作也依然能夠完成。有條件執(zhí)行(Conditional execution)根據(jù)***一個(gè)ExitStatus把工作劃分為不同的分支。這也包括FAILED狀態(tài)下執(zhí)行分支任務(wù)的能力,也就是說一個(gè)步驟的失敗不再是整個(gè)工作的致命錯(cuò)誤。暫停執(zhí)行(Pause execution)可以用來停止或等待外部命令(explicit instruction),這在業(yè)務(wù)規(guī)則需要人工干預(yù)以檢查業(yè)務(wù)關(guān)鍵數(shù)據(jù)是否有效時(shí)非常有用。而對(duì)于多步驟的并行執(zhí)行(parallel execution),各步驟間互相獨(dú)立,用戶可以自行指定哪些分支能夠并行執(zhí)行。
可伸縮性:
新版采用兩種方法支持多進(jìn)程的并行執(zhí)行:遠(yuǎn)程分割及劃分。遠(yuǎn)程分割是在對(duì)數(shù)據(jù)結(jié)構(gòu)沒有任何詳盡認(rèn)知的情況下對(duì)一個(gè)步驟的特定工作進(jìn)行劃分的一項(xiàng)技術(shù)。任何輸入源都可以動(dòng)態(tài)分割,只需要通過單一進(jìn)程讀取該輸入源,并將其作為一整塊發(fā)送給遠(yuǎn)程工作進(jìn)程即可。遠(yuǎn)程工作進(jìn)程實(shí)現(xiàn)了listener模式,對(duì)請(qǐng)求作出響應(yīng),處理數(shù)據(jù)且異步發(fā)回應(yīng)答。請(qǐng)求和應(yīng)答的傳輸必須是持久性的、有保證的,且只有單一的消費(fèi)者,這些特性在所有JMS實(shí)現(xiàn)中都已具備。Spring Batch正是在Spring Integration基礎(chǔ)上構(gòu)建的遠(yuǎn)程分割特性,因此它根本不必關(guān)心消息中間件的實(shí)際實(shí)現(xiàn)。
劃分是實(shí)現(xiàn)可伸縮性的另一種方式,相比之下,它需要知道輸入數(shù)據(jù)的結(jié)構(gòu),比如主鍵的范圍、或者要處理文件的名字。這種模式的好處是,分區(qū)中的每個(gè)元素的處理器都可以看作是正常Spring Batch工作中的單個(gè)步驟。它們不用實(shí)現(xiàn)任何特定模式,因而易于配置和測(cè)試。劃分比遠(yuǎn)程分割更具伸縮性,這是因?yàn)樵谕坏胤阶x取所有輸入數(shù)據(jù)時(shí)不會(huì)產(chǎn)生序列化瓶頸。在Spring Batch 2.0 中,劃分由兩個(gè)接口支持:PartitionHandler 和StepExecutionSplitter。
基于注解的配置:
Spring Batch組件如reader、writer、processor、listener,都可以使用注解來配置,也都可以插入到任務(wù)的某個(gè)步驟中去。這是通過針對(duì)Spring Batch的XML命名空間來實(shí)現(xiàn)的。
新版本在應(yīng)用程序監(jiān)測(cè)方面也有一些變化,包括對(duì)執(zhí)行或跳過項(xiàng)目的計(jì)數(shù)、記賬;在每個(gè)階段對(duì)所有項(xiàng)目讀取、處理和寫入的分割計(jì)數(shù)等方面的統(tǒng)計(jì)。對(duì)于那些沒有把執(zhí)行劃分成讀取、處理、寫入等各個(gè)步驟(或tasklet)的應(yīng)用來說,這些統(tǒng)計(jì)更多的是為了綜合了解而絕非必需,但多數(shù)情況下,這總比只存儲(chǔ)項(xiàng)目總數(shù)更可取。
SpringSource計(jì)劃在企業(yè)級(jí)Batch產(chǎn)品中提供劃分和遠(yuǎn)程分割、還有管理和調(diào)度等方面的完整的運(yùn)行時(shí)解決方案。其未來的路線圖還包括為Spring Batch 2.1增加Spring 3.0依賴(同時(shí)保留2.5.6為可選)。正是出于這樣的計(jì)劃,新版本中涵蓋的特性以工作和步驟的配置居多,尤其是在配置過程中使用了Spring Expression Language (EL)的延遲綁定(late binding),該延遲綁定的語法和Spring Batch 2.0中的基本相同,只是所提供的特性更多、靈活性更大。
【編輯推薦】