Job相关内容
本篇博文,博主主要介绍job相关的内容。
Job
job是业务类需要实现的接口,代表需要被调度框架进行调度的任务。job源码如下所示,从源码中我们可以看到,job接口只有一个excute方法,它的入参只有一个JobExecutionContext,并且允许抛出JobExecutionException异常。
public interface Job {
void execute(JobExecutionContext context)
throws JobExecutionException;
}
JobExecutionContext,是任务执行的上下文。比如我们可以从JobDetail中获取到该Job关联到的一些数据,如该Job对应的JobKey,JobDataMap。
JobExecutionException,是job运行中可能会产生的异常。JobRunShell会对该异常进行捕捉,然后由对应的Trigger进行处理。JobRunShell和Trigger,博主会在后面的博文进行介绍。
JobDetail
JobDetail是一个接口,定义了Job相关的一些Get方法。
JobDetailImpl
JobDetailImpl是JobDetail的实现,它的属性如下所示:
- jobClass,job的class。
- name, job的名称。
- group,job的分组。
- ...
JobBuilder
JobBuilder是JobDetail对象的构造器,JobBuilder使用了建造者设计模式,它的使用如下所示。
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
常用注解
这些常用的注解都需要作用在具体的Job类上。
- PersistJobDataAfterExecution。在job执行完之后,需要持久化存储任务数据(JobDataMap)。
- DisallowConcurrentExecution。不允许允许并发执行该任务。