Job相關(guān)內(nèi)容
本篇博文,博主主要介紹job相關(guān)的內(nèi)容。
Job
job是業(yè)務(wù)方法需要實(shí)現(xiàn)的接口,代表需要被調(diào)度框架進(jìn)行調(diào)度的任務(wù)。job源碼如下所示,從源碼中我們可以看到,job接口只有一個(gè)excute方法,它的入?yún)⒅挥幸粋€(gè)JobExecutionContext,并且允許拋出JobExecutionException異常。
public interface Job {
void execute(JobExecutionContext context)
throws JobExecutionException;
}
JobExecutionContext,是任務(wù)執(zhí)行的上下文。比如我們可以從JobDetail中獲取到該Job關(guān)聯(lián)到的一些數(shù)據(jù),如該Job對(duì)應(yīng)的JobKey,JobDataMap。
JobExecutionException,是job運(yùn)行中可能會(huì)產(chǎn)生的異常。JobRunShell會(huì)對(duì)該異常進(jìn)行捕捉,然后由對(duì)應(yīng)的Trigger進(jìn)行處理。JobRunShell和Trigger,博主會(huì)在后面的博文進(jìn)行介紹。
JobDetail
JobDetail是一個(gè)接口,定義了Job相關(guān)的一些Get方法。
JobDetailImpl
JobDetailImpl是JobDetail的實(shí)現(xiàn),它的屬性如下所示:
- jobClass,job的class。
- name, job的名稱。
- group,job的分組。
- ...
JobBuilder
JobBuilder是JobDetail對(duì)象的構(gòu)造器,JobBuilder使用了建造者設(shè)計(jì)模式,它的使用如下所示。
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
常用注解
這些常用的注解都需要作用在具體的Job類上。
- PersistJobDataAfterExecution。在job執(zhí)行完之后,需要持久化存儲(chǔ)任務(wù)數(shù)據(jù)(JobDataMap)。
- DisallowConcurrentExecution。不允許允許并發(fā)執(zhí)行該任務(wù)。
博主微信公眾號(hào)
<img src="https://gitee.com/chenhaogit/blogimages/raw/master/xsj/wzgzh-8cm.jpg" style="float:right"/>