我正在试用Quartz调度器,并使用Maven使其与Spring一起工作。
我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,石英中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上对它进行了配置。
有人能给我一个关于如何设置Quartz JobStore的好的参考资料吗?帮了大忙,谢谢。
您通常会从工厂类创建Scheduler
。Quartz可以通过多种方式设置。
>
通过使用org.quartz.impl.StdSchedulerFactory.getDefaultScheduler()
。如果您没有提供自己的文件,这将在Quartz发行版中加载quartz.properties
文件。
通过将配置指定为quartz中的键值对。属性
文件并将其加载到组织中。石英impl。StdSchedulerFactory(java.lang.String文件名)。getScheduler()
。
通过在java中指定配置。util。属性
作为键值对,并将其加载到组织中。石英impl。StdSchedulerFactory(java.util.props)。getScheduler()
。
通过使用Spring Framework中的spring-content-support
jar并使用更高级别的抽象,例如org.springframework.scheduling.quartz.SchedulerFactoryBean
。
等。
Quartz将仅在调用org.quartz.Scheduler#start()
时开始触发作业。在调用此方法之前,Scheduler
将处于待机模式。
可以通过调用org.quartz.Scheduler#Shutdown()
来销毁Scheduler以释放线程。
@org.springframework.context.annotation.Configuration
public class QuartzExample {
...
@org.springframework.context.annotation.Bean
public org.springframework.scheduling.quartz.SchedulerFactoryBean schedulerFactory() {
org.springframework.scheduling.quartz.SchedulerFactoryBean factoryBean = new org.springframework.scheduling.quartz.SchedulerFactoryBean();
return factoryBean;
}
}
上面的bean定义足以执行以下配置:-
org。springframework。行程安排。石英AdaptiableJobFactory
,支持java。lang.Runnable对象以及标准Quartzorg。石英作业
实例
org。石英简单。SimpleThreadPool
,池大小为10。这是通过相应的石英属性配置的
org。石英impl。StdSchedulerFactory
,读取标准的石英晶体。属性来自quartz。jar
org。石英简单。RAMJobStore
,不支持持久性且未群集化
org。石英调度程序#start()
在start()
的SmartLifecycle
实现中在初始化和org之后调用。石英调度器#shutdown()
在应用程序拆卸时的DisposableBean的destroy()
实现中调用。您可以通过设置org来覆盖启动行为。springframework。行程安排。石英SchedulerFactoryBean()。设置自动启动(错误)
。使用此设置,您必须手动启动计划程序
所有这些默认设置都可以通过调用
org上的各种setter方法来覆盖。springframework。行程安排。石英SchedulerFactoryBean
。
我在Github上提供了一个完整的工作示例。如果您对将作业保存在数据库中的示例感兴趣,请检查同一存储库的HSQLDB分支。
只是给你另一个选择,你试过Spring的任务调度吗?。现在我为此更改了所有旧的Quartz作业,并且更容易配置,您可以使用注释。
http://spring.io/blog/2010/01/05/task-scheduling-simplifications-in-spring-3-0/
您可以通过Spring框架查看Quartz JobStore的这些链接http://trimplement.com/using-spring-and-quartz-with-jobstore-properties/
如果你还是不明白,那就告诉我
我的使用案例: 作业 A 设置为在星期一到星期五的 18:00 运行。 作业 B 依赖于作业 A 是否成功,但应仅在周一至周五的 06:00 运行。(周一早上的跑步将取决于周五晚上的跑步)。我更喜欢设定的时间,而不是工作之间的延迟。 在任何给定的早晨,如果我看到作业A失败(因此作业B从未运行),我希望能够运行(修复)作业A,然后立即触发作业B。 到目前为止,我发现的只是这个用例的一部分。我修改了管
现在我每天下午3点运行我的cron作业 但是我想一天运行两次cron作业。上午10点30分和下午2点30分 我相信此命令将在上午 10:30 运行。我应该如何在下午 2:30 运行它?
我试图设置一个作业在一个用户使用Quartz的时区的特定时间的单一执行。现在,开箱即用,告诉调度器执行时区中的任何内容的唯一方法是通过。对于Coors,我可能会将datetime转换为cron表达式,然后在第一次成功执行后立即停止触发器,但这有点难闻。 谢谢,
问题内容: 我有一个在Hudson奴隶上运行的项目。我希望其中之一在Java6而不是默认值(我的环境中为Java5)下运行Ant。 在项目配置视图中,我希望找到以下两者之一: 一个显式选项,允许我设置一个自定义JDK位置以用于该项目。 一种为该项目设置自定义环境变量的方法,这将允许我将JAVA_HOME设置为JDK6位置。这将使Ant能够根据需要在Java6上运行。 有什么办法可以做到以上任一?如
我需要在Java中创建一个计划作业或Cron作业,以便每天早上6点运行。有没有一个简单的方法。我曾尝试将Timer类与scheduledAtFixedRate方法一起使用,但只需要一个延迟。 有一种方法可以将一天作为第一次,然后是第二次 如何创建启动计划程序的特定日期和时间? 我的类需要运行作业已经扩展了TimerWork。
问题内容: 我如何每隔15分钟在Jenkins上执行一次定时任务? 这是我尝试过的: 在詹金斯上,我有一个作业设置为使用以下cron语法每15分钟运行一次: 但是作业将每小时执行一次,而不是每15分钟执行一次。 我收到有关cron语法格式的警告: 这可能是cron作业每小时执行一次而不是15分钟执行一次的原因吗? 问题答案: 您的语法略有错误。说: 表示cron表达式与该字段的所有值匹配。 描述范