`
wzping
  • 浏览: 103124 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
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就分有多个实例,可以分别启动、停止了。
分享到:
评论
1 楼 wsh_88188 2009-11-23  
非常好,给我提供了很好的帮助,thx!

相关推荐

    springquartz

    7. **集群支持**:如果在多服务器环境下运行,Quartz的集群配置和其在Spring中的实现。 8. **监控与管理**:使用Quartz提供的JMX支持或者Web界面(如Admin Console)来监控和管理作业。 9. **最佳实践**:可能包括...

    quartz+spring示例

    Quartz 是一个开源的任务调度框架,它允许程序在指定的时间执行特定任务,而Spring 是一个广泛应用的Java企业级应用框架,提供了丰富的功能,包括依赖注入、面向切面编程以及全面的事务管理等。将 Quartz 与 Spring ...

    Python-celeryredundantschedulerCelerybeat调度器提供运行多个celerybeat实例的能力

    而在`celery-redundant-scheduler`环境中,多个Beat实例并行运行,每个实例都监控同一个调度表,确保任务能够准时触发,即使有单个实例出现问题,也不会影响整体的调度。 这个扩展实现的关键在于数据一致性。多个...

    quartz 1.8.6 API 文档

    3. **Clustered Schedulers**:在分布式环境中,Quartz支持集群,多个调度器可以在不同的机器上运行,协同工作,保证任务的高可用性和容错性。 4. **JobListeners**和**TriggerListeners**:这些监听器允许在Job...

    quartz-2.2.1相关jar

    在"quartz-2.2.1"版本中,主要包含以下几个关键组件和功能: 1. **Scheduler**: 调度器是Quartz的核心,负责管理所有的作业和触发器,以及它们之间的关系。你可以通过Scheduler实例来启动、停止和暂停任务的执行。 ...

    Quartz中文教程文档

    文档中可能会详细解释Quartz的配置,包括如何在Spring框架中配置Quartz,以及如何设置数据库存储作业和触发器,这是在多服务器环境中实现高可用性和持久化调度的关键。Quartz支持多种持久化策略,如JDBC存储、...

    quartz-1.7.3

    Quartz是Java领域的一款强大的开源任务调度框架,主要用于在企业应用中执行定时任务。1.7.3版本作为其更新迭代的一部分,提供了诸多改进和优化,以满足开发者对任务调度日益增长的需求。以下是对"quartz-1.7.3"相关...

    Quartz.Net任务调度

    - **集群支持**:Quartz.Net可以部署在多台服务器上形成集群,保证任务的高可用性和容错性。 5. **错误处理和日志记录** - **错误处理**:Quartz.Net提供了异常处理机制,当作业执行过程中发生错误,可以捕获并...

    Quartz.Net-Multiple-Schedulers:该项目演示了Quartz Job Scheduler的多个作业侦听器的用法

    Quartz.Net-Multi-Schedulers 该项目演示了Quartz作业调度程序使用多个作业侦听器的情况。介绍此项目与对连接到相同SQL数据存储的一个应用程序使用多个作业侦听器有关。 这种方法的可能用途是当我们需要卸载某些作业...

    作业调度Quartz.net源代码

    Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行计划任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和管理各种定时任务。标题中的"作业调度Quartz.net源代码"指的是Quartz.NET的...

    quartz-2.1.1 完整源码

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度 What's New In Quartz Scheduler ...

    quartz in python -- APScheduler

    - **多线程和多进程**:支持在单个进程中并行运行多个任务,或者在多进程中分布式调度。 在实际项目中,APScheduler可以用于各种场景,如定期数据抓取、定时发送邮件、定时备份数据库等。通过灵活配置,它能适应...

    Quartz 定时任务web使用

    总结来说,Quartz是一个强大的定时任务框架,通过定义作业和触发器,我们可以方便地在Java Web应用中实现各种定时任务的调度。在使用过程中,需要理解并合理配置调度器、作业和触发器,同时注意任务的生命周期管理和...

    quartz 2.1.2 for .net 作业调度框架

    在压缩包"quartz"中,可能包含了Quartz.NET库的DLL文件、示例代码、配置文件以及相关的文档资源,帮助用户更好地理解和使用这个框架。通过研究这些内容,开发者可以快速上手并充分利用Quartz的强大功能。

    Quartz.rar

    8. **集群支持**:Quartz还支持多节点集群,这意味着多个调度器实例可以协同工作,提供高可用性和负载均衡。当一个调度器失效时,其他调度器可以接管其任务。 9. **并发与线程管理**:Quartz使用线程池来并行执行...

    quartz 2.2.0 api

    Quartz 2.2.0 API 是一个广泛使用的开源任务调度框架,用于在Java应用程序中实现定时任务。它提供了一套强大的API,允许开发者灵活地定义、管理和执行各种任务。以下是对Quartz API核心概念和功能的详细说明: 1. *...

    Quartz1.70

    6. **集群支持**:Quartz支持多节点集群,可以在多个服务器上分布任务执行,提高系统的可用性和容错性。1.7.0可能对集群功能进行了优化,使得在分布式环境下的协调更为顺畅。 7. **监控与管理工具**:Quartz提供了...

    Android RxJava简易实例

    下面我们将通过一个简单的实例来了解如何在Android中使用RxJava。 首先,我们需要添加RxJava和RxAndroid的依赖项到项目的build.gradle文件中: ```groovy dependencies { implementation 'io.reactivex.rxjava3:...

    .net +Quartz.net+ Topshelf 实现windows定时服务

    首先,Quartz.NET是一个开源的作业调度框架,它允许开发者在.NET环境中安排任务的执行。其功能强大,支持复杂的调度策略,如定时、周期性或根据特定的触发条件执行任务。Quartz.NET的核心概念包括作业(Jobs)、...

    SPRING-HTTP

    "SPRING-HTTP"这个主题着重于Spring框架中的HTTP相关组件,包括Spring MVC和Spring WebFlux,这两个是处理Web请求的核心模块。下面我们将深入探讨Spring在HTTP处理方面的核心概念和功能。 1. **Spring MVC**: - *...

Global site tag (gtag.js) - Google Analytics