gpt4 book ai didi

java - 使用 Spring 3 的动态作业调度

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:21 24 4
gpt4 key购买 nike

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

目前我正在使用 Spring 3.1.2Hibernate。我需要给用户一个接收 cronJob 参数的前端,并基于它我想运行爬虫。是否可以使用 spring 来完成。

我阅读了一些关于 Quartz 的内容,但是为了完全理解如何在 spring 中实现调度程序,SO 或其他网站上的文章根本不清楚或不完整。

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

  1. 调度器工厂
  2. 触发器
  3. 工作(运行服务)

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

最佳答案

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);

在这里你定义了一个job(要运行的一段 Java 代码),trigger(当运行它时,用户可以提供任何有效的 CRON 表达式)并将它们全部包装起来通过安排它。 scheduler 实例可以由 Spring 注入(inject)。 Spring 还将处理适当的关闭。

关于java - 使用 Spring 3 的动态作业调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com