`

quartz系列之一:Hello World

    博客分类:
  • java
阅读更多
quartz是一款功能强大的任务调度框架。

1. 往pom.xml文件添加如下依赖:
  <properties>
    <testng.version>6.4</testng.version>
    <spring.version>3.1.2.RELEASE</spring.version>
    <quartz.version>1.8.4</quartz.version>
    <slf4j.api.version>1.7.5</slf4j.api.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>${testng.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>${quartz.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <!-- Logging support -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.api.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.api.version}</version>
    </dependency>
  </dependencies>


2. 在类路径下新建quartz-config.properties文件:
# 线程池实现类
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# 线程池大小
org.quartz.threadPool.threadCount=10


以及log4j.properties文件
log4j.rootLogger=debug, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%-5p [%t] (%F:%L) -%m%n


3. 任务类:
public class HelloJob implements Job {
	private static final Logger log = LoggerFactory.getLogger(HelloJob.class);

	@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		log.info("Hello World! - " + new Date());
	}
}


4. 任务调度类:
public class SchedulerUtil {
	public static Scheduler getScheduler(String configFile) throws Exception {
		// 加载配置文件,其中必须指定线程池实现类和大小,否则后续的getScheduler()调用会报错
		Properties props = new Properties();
		InputStream inStream = SimpleExample.class.getClassLoader()
				.getResourceAsStream(configFile);
		props.load(inStream);
		// 根据指定的配置来实例化StdSchedulerFactory
		SchedulerFactory sf = new StdSchedulerFactory(props);
		// 创建一个调度器(默认内存存储)
		Scheduler sched = sf.getScheduler();
		return sched;
	}
}


public class SimpleExample {
	public void run() throws Exception {
		// 获取一个调度器实例
		SchedulerUtil.getScheduler("quartz-config.properties);

		// 任务类封装成标准的JobDetail对象:
		JobDetail job = new JobDetail("job1", "group1", HelloJob.class);

		// 指定一个运行时刻
		Date runTime = TriggerUtils.getEvenMinuteDate(new Date());
		// 实例化一个简单触发器,在指定时刻触发
		SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1", runTime);

		// 调度器通过触发器调度指定任务
		sched.scheduleJob(job, trigger);

		// 启动调度器,在这之前,所有任务都不会执行
		sched.start();

		// 调度线程休眠,让线程池有时间去运行任务
		TimeUnit.SECONDS.sleep(70L);

		// 优雅地关闭调度器
		// 参数true表示等所有任务都执行完成后才关闭。
		sched.shutdown(true);
	}

	public static void main(String[] args) throws Exception {
		SimpleExample example = new SimpleExample();
		example.run();
	}
}


5. 运行main,查看输出结果。

INFO  [QuartzScheduler_Worker-1] (HelloJob.java:27) -Hello World! - Mon Nov 04 20:45:00 CST 2013

参考:
http://quartz-scheduler.org/documentation/quartz-1.x/examples/Example1
分享到:
评论

相关推荐

    quartz的helloworld

    这个"quartz的helloworld"示例旨在教你如何在Tomcat服务器上配置和使用Quartz来定期执行一个简单的任务——每五秒钟打印出"Hello, World!"。 首先,Quartz的核心概念包括Job(工作)和Trigger(触发器)。Job是实际...

    quartz helloworld例子

    这个"quartz helloworld例子"很可能是展示如何在Java项目中配置和使用Quartz库的一个简单教程。下面,我们将深入探讨Quartz的核心概念和如何创建一个Hello World应用。 1. **Quartz简介** Quartz是James House开发...

    一个简单的quartz、spring集成版helloWorld示例演示

    在这个"一个简单的quartz、spring集成版helloWorld示例演示"中,我们将探讨如何将这两个框架结合使用,实现一个基础的定时任务。 首先,Quartz的集成通常涉及到Spring的`SchedulerFactoryBean`,这个bean负责管理和...

    Quartz实例 helloworld

    Quartz实例 helloworld

    一个简单的quartz版helloWorld示例演示

    在"一个简单的quartz版helloWorld示例演示"中,我们看到的是一个Web项目,这意味着这个定时任务将在Web应用程序的上下文中运行。项目中可能包含以下关键部分: 1. **Job类**:这是我们要定时执行的任务。在这个例子...

    一个简单的quartz集群版helloWorld示例演示

    在数据库中导入附件中的tables_mysql.sql表,将本web项目导入(jar包已经附带),修改项目中的quartz.properties配置文件中的...本次定时规则为每分钟的6秒倍数在控制台输出一句helloWorld与当前时间。亲测通过可用。

    quartz的helloworld例子和所需的jar

    这是quartz定时器的一个helloworld例子,主要用到的是其中的quartz需要的jar,在lib文件夹中,需要学习的quartz的,可以下载我上传的quartz文档,里面有详细介绍quartz怎么使用。

    spring-boot-helloworld.zip

    在 "spring-boot-helloworld.zip" 这个压缩包中,我们很可能是找到了一篇关于 Spring Boot 入门的博客文章示例代码,用于展示如何构建一个简单的 "Hello World" 应用。 在 Spring Boot 中创建一个 "Hello World" ...

    springboot HelloWorld

    SpringBoot HelloWorld 是一个初学者经常会遇到的示例项目,它旨在帮助开发者快速了解并开始使用Spring Boot框架。Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程...

    一个简单的quartz动态定时示例演示

    在这个示例中,描述提到"每分钟的6秒倍数在控制台输出一句helloWorld"。这表明我们的Job类会包含一个`execute`方法,该方法会在满足特定Trigger条件时(即每分钟的6秒、18秒、30秒等)被调用,打印出"helloWorld"。 ...

    Quartz Cron表达式

    在Quartz调度器中,`CronTrigger`是一种非常强大的触发机制,它能够根据复杂的日历规则来调度任务,相比于`SimpleTrigger`而言更为灵活。如果你的任务调度需要依据特定的日历概念而不是简单的时间间隔来进行,则`...

    Quartz的一个简单实例

    JobDetail jobDetail = new JobDetail("job1", "group1", HelloWorld.class); // 创建一个触发器,并命名为 ‘trigger1’,将此触发器设置在 ‘job1’ 上 SimpleTrigger simpleTrigger = new SimpleTrigger(...

    一个基础的Quartz定时器案例

    例如,你可以创建一个名为`HelloWorldJob`的类,其中包含打印"Hello, World!"的逻辑。 2. **绑定Trigger** Trigger定义了Job的执行策略,如cron表达式或简单触发器。对于简单的定时执行,你可以使用`SimpleTrigger...

    Quartz一个开源作业调度框架

    首先,定义一个实现 `Job` 接口的类,如 `HelloJob`,它会在执行时输出 "Hello World!": ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; ...

    一个最简单的quartz案例

    在"quartz_FirstDemo"这个项目中,`HelloWorldJob`类就是我们的Job,它会在`execute`方法中打印一句“Hello, Quartz!”。而Trigger则根据配置决定何时启动这个Job。整个项目可能还包含了配置文件,用于定义Scheduler...

    springboot-helloworld:测试

    在本项目 "springboot-helloworld" 中,我们将探讨如何使用 SpringBoot 创建一个基础的“Hello, World!”应用。 1. **Spring Initializr** 创建 SpringBoot 项目通常始于 Spring Initializr...

    Spring Boot Hello World 入门源代码,直接返回一个http的JSON的输出

    综上所述,"Spring Boot Hello World 入门源代码"演示了如何利用 Spring Boot 快速构建一个返回 JSON 的 Web 服务。这个过程中涉及到的核心概念包括 Spring Boot 框架、RESTful API 设计、HTTP 协议、以及 JSON 数据...

    3. spring版 timer HelloWorld

    Spring版 timer HelloWorld”这一主题,它是Spring框架与Java定时任务处理的一个简单示例。通过这个实例,我们可以了解如何在Spring应用中使用Timer进行定时任务的执行。 首先,让我们明确什么是Timer。在Java中,...

    利用Quartz.net实现任务调度

    例如,创建一个打印“Hello, World!”的作业,每隔5分钟执行一次: ```csharp using Quartz; using Quartz.Impl; public class HelloWorldJob : IJob { public void Execute(IJobExecutionContext context) { ...

Global site tag (gtag.js) - Google Analytics