quartz任务定时任务创建

调度器:

/**
 * 任务调度器类
 * @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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值