我开发了一个网络爬虫,它以StartURL作为种子参数进行爬行。如果可能的话,我希望允许用户根据作业来安排此任务。
目前我正在使用Spring 3.1.2
和Hibernate
。我需要给用户一个接收cronJob参数的前端,并在此基础上运行爬网程序。可以用弹簧做吗。
我读了一些关于Quartz
的文章,但SO或其他网站上的文章一点也不清楚,或者它们不完整,以便完全理解如何在春季实现调度器。
我知道有三个组成部分
- 日程表传真
- 触发器
- 作业(要运行的服务)
我希望有人能指引我正确的方向。
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);
在这里,您定义了一个作业(要运行的Java代码)、触发器[何时运行,用户可以提供任何有效的CRON表达式],并通过调度将其全部封装。调度器实例可以由Spring注入。弹簧也将处理适当的关闭。