使用Spring 3进行动态作业调度

Dhr*_*hah 5 java spring spring-mvc scheduled-tasks java-ee

我开发了一个Web爬虫,它使用Start URL作为种子参数进行爬网.我希望允许用户根据作业安排此任务.

目前我正在使用Spring 3.1.2Hibernate.我需要给用户一个接收cronJob参数的前端,并根据我想要运行爬虫.是否可以使用弹簧来做到这一点.

我读了一下,Quartz但SO或其他网站上的文章一点也不清楚,或者它们不完整,以便完全理解如何在春天实现调度程序.

我知道有三个组成部分的基础知识

  1. SchedulerFacotry
  2. 触发
  3. 工作(服务运行)

我希望有人可以指导我正确的方向.

Tom*_*icz 9

Quartz调度程序是适合这项工作的正确工具.出于某种原因,几乎所有的教程都专注于在启动时以XML格式定义作业 - 而Quartz完全能够在运行时调度(重新|非)调度作业.

你可以而且应该利用Spring来启动Quartz Scheduler,但是你可以直接从你的代码中与它进行交互.以下是文档中的一个简单示例:

JobDetail job = newJob(SimpleJob.class)
    .withIdentity("job1", "group1")
    .build();

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();

scheduler.scheduleJob(job, trigger);
Run Code Online (Sandbox Code Playgroud)

在这里,您可以定义一个作业(要运行的Java代码片段),触发器(何时运行它,用户可以提供任何有效的CRON表达式)并通过调度它来包装它.该调度实例可以由Spring注入.Spring也将处理正确的关闭.