Quartz-教程

  1. Quartz 版本
    截至目前(2018-3-23),使用的是 2.2.3 版本
  2.  TestQuartz
    几个概念搞清楚先:
    触发器 Trigger: 什么时候工作
    任务 Job: 做什么工作
    调度器 Scheduler: 搭配 Trigger和Job

    代码里注释很清楚,直接看注释即可理解
    public class TestQuartz {
        public static void main(String[] args) throws Exception{
                //创建调度器
                Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
     
                //定义一个触发器
                Trigger trigger = newTrigger().withIdentity("trigger1", "group1") //定义名称和所属的租
                    .startNow()
                    .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(2) //每隔2秒执行一次
                        .withRepeatCount(10)) //总共执行11次(第一次执行不基数)
                    .build();
     
                //定义一个JobDetail
                JobDetail job = newJob(MailJob.class) //指定干活的类MailJob
                    .withIdentity("mailjob1", "mailgroup") //定义任务名称和分组
                    .usingJobData("email", "admin@10086.com") //定义属性
                    .build();
                 
                //调度加入这个job
                scheduler.scheduleJob(job, trigger);
     
                //启动
                scheduler.start();
                 
                //等待20秒,让前面的任务都执行完了之后,再关闭调度器
                Thread.sleep(20000);
                scheduler.shutdown(true);
        }
    }
  3.  MailJob
    MailJob 实现了 Job 接口,提供 execute,干具体的活儿
    public class MailJob implements Job {
        public void execute(JobExecutionContext context) throws JobExecutionException {
            JobDetail detail = context.getJobDetail();
            String email = detail.getJobDataMap().getString("email");
             
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            String now = sdf.format(new  Date());
             
            System.out.printf("给邮件地址 %s 发出了一封定时邮件, 当前时间是: %s%n" ,email, now);
        }
    }
  4.  分组干什么用?
    .withIdentity("mailjob1", "mailgroup")
    mailgropu就是分组的意思。
    比如一个系统有3个job 是备份数据库的,有4个job 是发邮件的,那么对他们进行分组,可以方便管理,类似于一次性停止所有发邮件的这样的操作.

  5. 静态导入
    import static 这种写法叫做静态导入,指的是导入某个类的静态方法, 这样就可以直接使用了,而不是写成:

    JobBuilder.newJob()
  6.  log4j.xml
    log4j 放在这里,只开放error以上的日志信息,否则看上去乱哄哄的

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
     
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     
      <appender name="default" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c]%n%m%n%n"/>
        </layout>
      </appender>
     
     <logger name="com.how2java">
       <level value="error" />
     </logger>
     
      <root>
        <level value="error" />
        <appender-ref ref="default" />
      </root>
     
    </log4j:configuration>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值