5

我开发了一个网络爬虫,它使用起始 URL 作为种子参数进行爬网。如果可能,我希望允许用户根据作业安排此任务。

目前我正在使用Spring 3.1.2Hibernate。我需要为用户提供一个接收 cronJob 参数的前端,并在此基础上运行爬虫。是否可以使用弹簧来做到这一点。

我读了一点,Quartz但是 SO 或其他网站上的文章根本不清楚,或者它们不完整,以便完全了解如何在 spring 中实现调度程序。

我知道它包含三个组成部分的基础知识

  1. 调度器工厂
  2. 扳机
  3. 作业(要运行的服务)

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

4

1 回答 1

9

Quartz 调度器正是这项工作的正确工具。出于某种原因,几乎所有教程都专注于在启动时用 XML 定义作业——而 Quartz 完全能够在运行时(重新|取消)调度作业。

您可以而且应该利用 Spring 的优势来启动 Quartz 调度程序,但是您可以直接从您的代码中与它进行交互。这是文档中的一个简单示例:

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

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

scheduler.scheduleJob(job, trigger);

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

于 2012-08-28T15:59:16.257 回答