网赚论坛

 找回密码
 免费注册
查看: 196|回复: 0
打印 上一主题 下一主题

使用Quartz实现作业调度(二)

[复制链接]

17

主题

23

帖子

68

积分

Ⅰ级财主

Rank: 1

积分
68
跳转到指定楼层
楼主
发表于 2017-9-13 19:57:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 前面使用了Quartz 1.6来实现作业调度,但是只能指定运行的次数,在实际运用中就有些不足了。所以我们这次使用Quartz(http://dream.javaoop.cn/articles/**-tirgger-runner.html)提供得一种表达式,这种表达式可以灵活定义作业调度得时间、周期等等。
  源码如下:
  **Quartz.java
  package cn.javaoop.dream.quartz;
  import java.io.File;
  import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import org.quartz.;
  import org.quartz.ExecutionContext;
  import org.quartz.ExecutionException;
  /**
  * 读取D盘文件将其内容写入C盘文件中
  * @author JavaChaos
  *
  */
  public class **Quartz implements {
  @Override
  public void execute(ExecutionContext context)
  throws ExecutionException {
  System.out.println(context.getTrigger().getName());
  try {
  File file = new File(”D:/test.txt”);
  if (file.canExecute()) {
  FileWriter writer = new FileWriter(”C:/test.txt”);// 写入C盘文件
  FileReader reader = new FileReader(”D:/test.txt”);// 读取D盘文件
  writer.write(reader.read());
  System.out.println(”写入成功”);
  } else {
  System.out.println(”文件不存在”);
  }
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
  CronTriggerRunner.java
  package cn.javaoop.dream.quartz;
  import java.text.ParseException;
  import org.quartz.CronExpression;
  import org.quartz.CronTrigger;
  import org.quartz.Detail;
  import org.quartz.Scheduler;
  import org.quartz.SchedulerException;
  import org.quartz.Schedule**ctory;
  import org.quartz.impl.StdSchedule**ctory;
  /**
  * 每隔5秒钟检查D盘有无test.txt,如果有则复制到C盘
  *
  * @author JavaChaos
  *
  */
  public class CronTriggerRunner {
  public void task() throws SchedulerException {
  // 初始化一个调度工厂
  Schedule**ctory schedule**ctory = new StdSchedule**ctory();
  // 初始化一个调度器
  Scheduler scheduler = schedule**ctory.getScheduler();
  // Detail对象相当于你要调度得任务
  Detail Detail = new Detail(”Detail-c1″,
  ”DetailGroup-s1″, **Quartz.class);
  // CronTrigger对象相当于你的配置信息
  CronTrigger cronTrigger = new CronTrigger(”cronTrigger”,
  ”triggerGroup2″);
  try {
  // cron表达式
  CronExpression expression = new CronExpression(”0/5 * * * * ?”);// 每隔5秒执行一次。表达式很强大
  // 可以阅读一下相关帮助文档
  // 把Cron表达式传给CronTrigger
  cronTrigger.setCronExpression(expression);
  // 传入参数
  scheduler.schedule(Detail, cronTrigger);
  // 开始进行调度
  scheduler.start();
  } catch (ParseException e) {
  e.printStackTrace();
  }
  }
  public static void main(String[] args) {
  try {
  CronTriggerRunner runner = new CronTriggerRunner();
  runner.task();
  } catch (SchedulerException e) {
  e.printStackTrace();
  }
  }
  }
  这个例子将上篇日志例子中得**Trigger对象换成了CronTrigger对象。CronExpression类提供得表达式,你可以自己定义运行得时间、周期。更多得使用方法可以阅读相关帮助文档。
  下一次会介绍将Quartz整合入Spring中。Srping估计都不会陌生,两者整合灵活性、安全性有了更好得提升。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2024-11-27 16:41 , Processed in 0.296401 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

快速回复 返回顶部 返回列表