定時任務實現(xiàn)原理 如何在spring中配置定時任務?
如何在spring中配置定時任務?定時任務的實現(xiàn)方式有多種,例如JDK自帶的Timer TimerTask方式,Spring3.0以后的調度任務(ScheduledTask),Quartz等。Time
如何在spring中配置定時任務?
定時任務的實現(xiàn)方式有多種,例如JDK自帶的Timer TimerTask方式,Spring3.0以后的調度任務(ScheduledTask),Quartz等。
Timer TimerTask是最基本的解決方案,但是比較遠古了,這里不再討論。Spring自帶的Scheduled
Task是一個輕量級的定時任務調度器,支持固定時間(支持cron表達式)和固定時間間隔調度任務,支持線程池管理。以上兩種方式有一個共同的缺點,那就是應用服務器集群下會出現(xiàn)任務多次被調度執(zhí)行的情況,因為集群的節(jié)點之間是不會共享任務信息的,每個節(jié)點上的任務都會按時執(zhí)行。Quartz是一個功能完善的任務調度框架,特別牛叉的是它支持集群環(huán)境下的任務調度,當然代價也很大,需要將任務調度狀態(tài)序列化到數(shù)據(jù)庫。Quartz框架需要10多張表協(xié)同,配置繁多,令人望而卻步...
經過折中考慮,還是選擇了Spring的ScheduledTask來實現(xiàn)定時任務。如下:
1.Spring配置文件application-context.xml中添加task命名空間和描述。
[html]viewplaincopy