您的位置:首页 > 其它

quartz任务定时任务创建

2017-09-18 16:56 190 查看
调度器:

/**
* 任务调度器类
* @author wwr
* 调度任务:定时发送信息类:SendMsgForPersonTimmer;调度时间:五分钟
*/
public class TaskScheduler {

private static org.slf4j.Logger _log = LoggerFactory.getLogger(MainScheduler.class);

//创建调度器
public static Scheduler getScheduler()throws SchedulerException{
SchedulerFactory schdulerFactory = new StdSchedulerFactory();
return schdulerFactory.getScheduler();
}
/**
* 任务调度
* @param jobClass  任务类
* @param job1      任务名
* @param job1Group 任务组别
* @param trigger1  触发器名字
* @param triggerGroup  触发器组别
* @throws SchedulerException
* @throws ParseException
*/
public static void schedulerJob(Object jobClass,String job1,String job1Group,String trigger1,String triggerGroup)throws SchedulerException, ParseException{
Class<? extends Job> job = (Class<? extends Job>) jobClass.getClass();
//创建任务
JobDetail jobDetail = JobBuilder.newJob(job).withIdentity(job1,job1Group).build();
//创建触发器,三秒延迟
Long time = System.currentTimeMillis()+3*1000L;//设置3秒后启动任务
Date startTime = new Date(time);
//Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group3").withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInHours(10).repeatForever()).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(trigger1,triggerGroup).startAt(startTime).withSchedule(CronScheduleBuilder.cronSchedule("5/0 * * * * ?")).build();//设置五分钟执行一次任务

Scheduler scheduler = getScheduler();
//将任务及触发器放入调度器
scheduler.scheduleJob(jobDetail, trigger);
//调度器开始调度任务
scheduler.start();
}


创建要执行的定时任务:

/**
* 定时检测专家邮件状态是否正常
* 未发的话给专家发送邮件
* @author wwr
*
*/
public class SendMsgForPersonTimmer implements Job{

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//检查邮件状态
List<ExpertMailModel> mailList = ExpertMailModel.dao.getMail();
for(ExpertMailModel msg:mailList){
//判断邮件状态
if(Integer.parseInt(String.valueOf(msg.get("STATUS")))==0){
//发送邮件
String sjr=msg.getStr("RECEIVE_MAIL");
String fsnr=msg.getStr("CONTENT");
MailKit.send(sjr,Arrays.asList(sjr), "抽取专家提醒 ", fsnr);
//更新邮件记录表的邮件发送时间 和状态
msg.set("SEND_DATE",  Timestamp.valueOf(DateUtil.getNow()));
msg.set("STATUS", 1);
msg.update();
}
//判断短信状态
if(Integer.parseInt(String.valueOf(msg.get("SHORTMSGSTATUS")))==0){
String telPhone = msg.get("TELPHONE");
String personName = msg.get("EXPERT_NAME");//专家姓名
String project = msg.get("PROJECTNAME");//项目名称
String group = msg.get("GROUPNAME");//项目组别名称
//设置短信内容
String msgContent = "【山西晋路软件有限公司】"+personName+":您已被"+project+"项目抽取作为"+group+"专家进行评审,请登录邮箱确认是否能按时参加!";
int feedBack = SendShortMsg.sendMsg(telPhone, personName, project, group);
if(feedBack==1){
msg.set("SHORTMSGCONTENT", msgContent);
msg.set("SHORTMSGSTATUS", 1);
msg.update();
}else{
System.out.println("短信发送失败!!!");
}
}

}
}


调度器装载定时任务job。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  quartz 任务调度