我开发了一个网络抓取工具,它使用起始网址作为种子参数进行抓取。我希望允许用户根据作业安排此任务。
目前我正在使用Spring 3.1.2
和Hibernate
。我需要给用户一个接收cronJob参数的前端,并根据我想要运行爬虫。是否可以使用弹簧来做到这一点。
我读了一些关于Quartz
的内容,但SO或其他网站上的文章并不完全清楚,或者它们不完整,以便完全了解如何在春季实施调度程序。
我知道有三个组成部分的基础知识
我希望有人可以指导我正确的方向。
答案 0 :(得分:9)
Quartz调度程序是这项工作的正确工具。出于某种原因,几乎所有教程都专注于在启动时使用XML定义作业 - 而Quartz完全能够在运行时调度(re- | un - )作业。
你可以而且应该利用Spring来启动Quartz Scheduler,但是你可以直接从你的代码中与它进行交互。这是一个简单的示例from the documentation:
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可以注入 scheduler 实例。 Spring也将处理正确的关闭。