quartz

spring 配置触发器 ----可以定时的自动运行某些东西

牧云@^-^@ 提交于 2019-11-29 09:59:26
在Spring中配置Quartz 前面介绍过了Timer在Spring中的实现,今天接前文介绍Quartz在Spring中的配置. 而Quartz类库不但有着上述JDK的Timer类库类似的配置,更重要的,它还有着类似于unix的cron服务的配置; 正是基于cron服务的配置使Quartz能方便、清晰指定启动时间,让开发者更青睐于它。 在调度方式上,不同于Timer,Quartz可以通过两种方式来调度程序:一是使用Spring提供的 MethodInvokingJobDetailFactoryBean代理类,Quartz通过该代理类直接调度任务类的某个函数;二是任务类继承并实现Quartz接口,Quartz通过该接口进行调度。如果采用第一种方式,即由Quartz直接调度任务类的某个接口,那么,业务类是不必进行任何修改的。我们的业务类大概如下: public class OpenVirtualService { public void open(){ //虚机开通 //业务逻辑 } } 第一步,在Spring配置文件中增加本业务类 <bean id="openVirtualService" class="com.stone.product.virtual.service.OpenVirtualService"/> 第二步,定义任务

基于RAMJobStore开发Quartz Scheduler调度器列表

守給你的承諾、 提交于 2019-11-29 09:54:47
trigger各状态说明: None:Trigger已经完成,且不会在执行,或者找不到该触发器,或者Trigger已经被删除 NORMAL:正常状态 PAUSED:暂停状态 COMPLETE:触发器完成,但是任务可能还正在执行中 BLOCKED:线程阻塞状态 ERROR:出现错误 计划中的任务 指那些已经添加到quartz调度器的任务,因为quartz并没有直接提供这样的查询接口,所以我们需要结合JobKey和Trigger来实现,核心代码: Scheduler scheduler = schedulerFactoryBean.getScheduler(); GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup(); Set<JobKey> jobKeys = scheduler.getJobKeys(matcher); List<ScheduleJob> jobList = new ArrayList<ScheduleJob>(); for (JobKey jobKey : jobKeys) { List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey); for (Trigger trigger : triggers) {

(翻译)Quartz官方教程——第九课:Job Stores

有些话、适合烂在心里 提交于 2019-11-29 09:54:37
JobStore是用来跟踪你加到调度器中的所有“工作数据”:任务、触发器、日历等等。所以为你的Quartz调度实例选取合适的JobStore是非常重要的。幸运的是,当你理解了不同JobStore的特点以后这个选择会变得非常容易。您可以在您提供给SchedulerFactory的属性文件(或对象)中声明您的调度程序应使用哪个JobStore(以及它的配置设置),以便用于生成调度程序实例。 永远不要在代码中直接使用JobStore实例。许多用户会因为各种原因这么做。JobStore仅限于Quartz本身的内部使用。你必须告诉Quartz(通过配置)使用哪个JobStore,但是你应该只使用代码中的Scheduler接口。 RAMJobStore RAMJobStore是最简单易用的一种JobStore,而且拥有最高的性能(在CPU运行时间方面)。RAMJobStore的运行方式就像他的名字一样:它把所有数据存储在内存中。这就是为什么它快如闪电,以及配置如此简单的原因。缺点是当你的应用程序结束(或崩溃)时,所有的调度信息都会丢失——这意味着RAMJobStore不能实现任务和触发器的持久化。对于某些应用来说,这是可以接受的——甚至是必须的,但对于另外一些应用来说,这将是灾难性的。 要使用RAMJobStore(并假设您使用的是StdSchedulerFactory),只需将类名称org

quartz-----Job Stores

﹥>﹥吖頭↗ 提交于 2019-11-29 09:54:26
JobStore负责跟踪您提供给调度程序的所有“工作数据”:jobs,triggers,日历等。 RAMJobStore RAMJobStore是使用最简单的JobStore,它也是性能最高的(在CPU时间方面)。RAMJobStore以其明显的方式获取其名称:它将其所有数据保存在RAM中。这就是为什么它是闪电般快的,也是为什么这么简单的配置。缺点是当您的应用程序结束(或崩溃)时,所有调度信息都将丢失 - 这意味着RAMJobStore无法履行作业和triggers上的“非易失性”设置。对于某些应用程序,这是可以接受的 - 甚至是所需的行为,但对于其他应用程序,这可能是灾难性的。 要使用RAMJobStore(并假设您使用的是StdSchedulerFactory),只需将类名称org.quartz.simpl.RAMJobStore指定为用于配置石英的JobStore类属性: 配置Quartz以使用RAMJobStore org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore JDBC JobStore JDBCJobStore也被恰当地命名 - 它通过JDBC将其所有数据保存在数据库中。因此,配置比RAMJobStore要复杂一点,而且也不是那么快。但是,性能下降并不是很糟糕,特别是如果您在主键上构建具有索引的数据库表。

Maven添加外部包不成功处理方法

99封情书 提交于 2019-11-29 09:54:04
遇到情况: 本地Maven仓库没有相应的jar包,且从远程仓库download不下来。 具体问题:在使用Spring+Quartz定时任务时,缺少org.springframework.scheduling jar包。 org.springframework.scheduling.quartz.SchedulerFactoryBean 注入不成功,因为我的Maven仓库下不到该包。于是在网上找了个含有该包的spring.jar来用,结果不能导入。 方式一:导入报错 <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/spring.jar</systemPath> </dependency> 方式二:修改jar包名称,给定版本,正常 <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>3.0.0</version> <scope>system</scope>

使用Spring3+Quartz实现定时任务

倖福魔咒の 提交于 2019-11-29 09:53:51
在本文中,我们使用Spring3+Quartz实现定时任务。spring中定义了一些接口来支持Quartz,可以使你的业务逻辑类和Quartz解耦。 这个例子中使用了如下maven的依赖项: <dependencies> <!-- Spring 3 dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- QuartzJobBean in spring-context-support.jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- Spring + Quartz need transaction --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx<

Quartz初体验

给你一囗甜甜゛ 提交于 2019-11-29 09:52:37
quartz初体验 Quartz是一个开源作业调度框架。 看了一下官方的例子,一些简单的任务执行非常方便,和使用linux里的contab有点类似。 大致就是在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表, quartz就会去准备执行。 直接看代码吧 先解决依赖,它需要的依赖比较少。 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency> 下面是主要代码: public class App { private static final int SECONDS = 5; //多少秒执行一次这个任务 public static void main(String[] args) throws SchedulerException { Scheduler scheduler =

Spring Quartz任务调度

怎甘沉沦 提交于 2019-11-29 09:52:14
使用 Quartz 调度器 Quart 使用 Trigger 、 Job 和 JobDetail 对象实现各种调度任务。对于 Quartz 背后的基本概念,参考 http://quartz-scheduler.org 。为了方便的目的, Spring 提供一组类简化 Quartz 在基于 Spring 应用中的使用。 使用 JobDetailBean JobDetail 对象包含需要运行任务的所有信息。 Spring 框架提供一个 JobDetailBean 使用更多合理默认值的真实 JavaBean 产生 JobDetail 。让我们看一下下面的例子: <bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="example.ExampleJob" /> <property name="jobDataAsMap"> <map> <entry key="timeout" value="5" /> </map> </property> </bean> package example; public class ExampleJob extends QuartzJobBean { private int