如何在spring中运行多个schedulers quartz 实例

http://wzping.iteye.com/blog/468263

1、定义一个JOB 
<!-- 使用pojo来做job,指定pojo和method --> 
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        <property name="targetObject" ref="pojoObject"/> 
        <property name="targetMethod" value="execute"/> 
    </bean>

2、定义一个触发时间 
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
        <property name="jobDetail" ref="jobDetail"/> 
        <!--朝九晚五工作时间内每半小时执行一次--> 
        <property name="cronExpression" value="0 0/30 9-17 *,* * ?"/> 
    </bean>

3、定义管理器 
    <bean name="quartzScheduler" 
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="triggers"> 
            <list> 
                <ref bean="cronTrigger"/> 
            </list> 
        </property> 
    </bean>

一般的应用,只要配置上面这些东东就可以了。

但如果有大量的定时执行程序,而且有时需要分别启动,这个时候就要用到两个Scheduler, 在spring中是怎么实现的呢?简单地配置两个SchedulerFactoryBean是不解决问题的。原因如下:

看一下SchedulerFactoryBean的代码,里面一个参数叫做:schedulerName,SchedulerFactoryBean通过 StdSchedulerFactory返回一个具体的Scheduler的。而且每个Scheduler是注册在 SchedulerRepository中的。 
SchedulerRepository中的每个Scheduler都是放在一个MAP中的,根据名字作为KEY。

private HashMap schedulers;

这样就比较好办了。 
    <bean name="quartzScheduler" 
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="triggers"> 
            <list> 
                <ref bean="cronTrigger"/> 
            </list> 
        </property> 
        <property name="schedulerName"><value>first</value></property> 
    </bean> 
可以声明多个。并设上不同名字,这样scheduler就分有多个实例,可以分别启动、停止了。

时间: 2024-08-05 23:40:49

如何在spring中运行多个schedulers quartz 实例的相关文章

[转帖]如何在VirtualBox中运行macOS Catalina Beta版本

如何在VirtualBox中运行macOS Catalina Beta版本 secist2019-08-03共2179人围观系统安全 https://www.freebuf.com/articles/system/208917.html 晚上尝试一下. 本内容是关于如何在Linux上的VirtualBox中运行macOS Catalina Beta版的简短指南. 在开始之前你需要做以下准备: Linux x86_64(我使用的是Mint 19.1)英特尔酷睿CPU,不少于8 GB的内存和一个不错

模拟Spring如何在WEB中运行

Spring在web中配置和普通的Java程序中有所区别,总结一下主要表现在以下几个方面: ①jar包不同,需要引入两个web的jar包 ②需要考虑IOC容器创建的时间 非 WEB 应用在 main 方法中直接创建 在web应用中为了保证spring的运行,所以必须在程序刚在容器中启动时就必须创建IOC容器,这样的时间人为不好把握,我们可以通过Listener来监听程序的运行,保证在刚开始时就创建,具体采用的是 创建一个实现ServletContextListener接口的类,并在重写的cont

如何在CocosCodeIDE中运行学习js-tests

我想对于每个Cocos2d游戏开发者来说,js-tests一直都是学习和参考的宝贵资源,也是最权威的指导教程.而,我们知道,CocosCodeIDE是官方推荐的一款强有力的IDE,其功能之强大,之便捷是其他IDE所无法比拟的.那么如何将二者组合在一起,为我们的学习提供帮助呢?本篇博客将带你走进他们的世界. 一.了解CocosCodeIDE和js-tests CocosCodeIDE:官网推出的一款强大的IDE,基于Eclipse改制而成.其主要特色在于两个方面: 便捷实用: CocosCodeI

如何在linux中运行sql文件

1.在linux中进入sql命令行 mysql -u root -p   输入密码 2.假设home下面有a.sql文件 先得use databasename,要不会报错 “No Database Selected” 然后source /home/a.sql 记得home前面要有 / 要不会报错 不能打开这个文件的. ---------------------------------------- 还有一个更好的方法: 使用navicat来连接linux下的mysql数据库 然后再navicat

如何在android中运行C语言程序

问题阐述: 本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了.因为Android使用的也是linux内核,所以我想当然的认为按照同样的方法将程序移植到mini6410的android系统中也可以成功运行,但是当我运行程序的时候却提示我不能找到可执行文件(xlisten-arm是交叉编译出来的可执行文件): / # ./xlisten-arm/system/bin/sh: ./xlisten-arm: not found 1.探索:

如何在 Gradle 中运行 Groovy 的 主类以及测试类

完整的Gradle小项目:密码管理集中化 下面是配置范例 build.gradle: apply plugin: 'groovy' repositories { mavenLocal()     mavenCentral() } dependencies {     compile 'org.codehaus.groovy:groovy-all:2.3.7' compile 'org.apache.ant:ant:1.9.4'     testCompile 'junit:junit:4.11'

如何在Spring中取得Request对象

这里首先需要说明一点的是,下面讲的获取Request对象都是在非Controller层中进行的操作.因为对于Controller来说,若要用到Request对象的话,直接在方法签名中声明一个HttpServletRequest对象就可以了.另外作为一个良好的Controller-Service-Dao架构,HttpServletRequest对象也不应该出现在Service层或Dao层中,那么其实也就是在一些通用的工具类中才会需要用到它.OK,下面开始正题: 注解 public class Te

如何在cmd中运行.py文件

C:\Users\mf>cd C:\Program Files\Python36C:\Program Files\Python36>python const.py 切换到.py文件所在目录

如何在Spring框架中使用RMI技术

在博客<RMI远程方法调用技术>中使用纯Java代码演示了RMI技术的使用,本篇博客将介绍如何在Spring中使用RMI技术. 正如博客<RMI远程方法调用技术>提到的那样--RMI技术的应用通常包括在两个独立的应用程序中:RMI服务端应用程序和RMI客户端应用程序.本博客也从这两方面入手:        RMI服务端应用程序: 1.自定义远程接口 代码如下: package com.ghj.packageofrmi; /** * 定义远程接口. * * @author 高焕杰 *