单位项目中对于备份日志、邮件发送等日常工作,使用Spring下的quartz以定时任务的方式处理。但随着将整个系统升级到集群环境后,问题来了。多个节点到底由哪个节点来执行这些任务呢?
起初的做法是,由集群中权重较小的一个节点担当。具体做法是在发布程序时只在此节点applicationContext-schedule.xml中的调度器(Scheduler)配置中添加相应的触发器(Trigger)。
以上方法虽然笨,但解决了燃眉之急。手头没有那么多着急的需求时还是想用更靠谱的方式来替代它。于是准备采用Spring+Quartz集群。
重点参数了几下几篇博文:
1.完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题
Quartz的官网地址如下,数据表创建脚本及官方实例都在包里呢:
http://www.quartz-scheduler.org/
以下是对于Quartz.properties的相关属性一些说明(在官方实例example13配置文件基础上修改)
#============================================================================ # Configure Main Scheduler Properties #============================================================================ ##可为任何值,用在 JDBC JobStore 中来唯一标识实例,但是所有集群节点中必须相同。 org.quartz.scheduler.instanceName = TestScheduler ##属性为 AUTO即可,基于主机名和时间戳来产生实例 ID,不为AUTO需要保持各个节点间不一致 org.quartz.scheduler.instanceId = instance_one org.quartz.scheduler.skipUpdateCheck = true #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 5 org.quartz.threadPool.threadPriority = 5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold = 60000 ##属性为 JobStoreTX,将任务持久化到数据中。因为集群中节点依赖于数据库来传播 Scheduler 实例的状态,你只能在使用 JDBC JobStore 时应用 Quartz 集群。这意味着你必须使用 JobStoreTX 或是 JobStoreCMT 作为 Job 存储;你不能在集群中使用 RAMJobStore。 org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate org.quartz.jobStore.useProperties=false org.quartz.jobStore.dataSource=myDS org.quartz.jobStore.tablePrefix=QRTZ_ ##属性为 true,你就告诉了 Scheduler 实例要它参与到一个集群当中。这一属性会贯穿于调度框架的始终,用于修改集群环境中操作的默认行为。 org.quartz.jobStore.isClustered=true #org.quartz.jobStore.clusterCheckinInterval 属性定义了Scheduler 实例检入到数据库中的频率(单位:毫秒)。Scheduler 检查是否其他的实例到了它们应当检入的时候未检入;这能指出一个失败的 Scheduler 实例,且当前 Scheduler 会以此来接管任何执行失败并可恢复的 Job。通过检入操作,Scheduler 也会更新自身的状态记录。clusterChedkinInterval 越小,Scheduler 节点检查失败的 Scheduler 实例就越频繁。默认值是 15000 (即15 秒)。 #============================================================================ # Other Example Delegates #============================================================================ #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.CloudscapeDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DB2v6Delegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DB2v7Delegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DriverDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.MSSQLDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PointbaseDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.WebLogicDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.WebLogicOracleDelegate #============================================================================ # Configure Datasources (PostgreSQL) #============================================================================ org.quartz.dataSource.myDS.driver = org.postgresql.Driver org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost:5432/quartz org.quartz.dataSource.myDS.user = quartz org.quartz.dataSource.myDS.password = quartz org.quartz.dataSource.myDS.maxConnections = 5 org.quartz.dataSource.myDS.validationQuery= #============================================================== #Configure DataSource (MySQL) #============================================================== org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=UTF-8 org.quartz.dataSource.myDS.user = root org.quartz.dataSource.myDS.password = 123456 org.quartz.dataSource.myDS.maxConnections = 30 #============================================================================ # Configure Plugins #============================================================================ #org.quartz.plugin.shutdownHook.class = org.quartz.plugins.management.ShutdownHookPlugin #org.quartz.plugin.shutdownHook.cleanShutdown = true #org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
相关推荐
本文将深入探讨嵌入式多任务时钟系统的设计原理、关键技术和应用场景。 首先,嵌入式系统的核心是微处理器或微控制器,如ARM架构的开发板,这种开发板因其低功耗、高性能的特点,广泛应用于各种嵌入式应用。在多...
电子时钟设计任务书 本资源提供了电子时钟设计任务书,旨在指导学生完成一个数字电子钟的设计任务。该任务书涵盖了电子技术应用实习的内容、设计要求、学生任务、提交文件等方面。 知识点1:电子时钟设计概述 电子...
**基于多任务时钟系统设计报告** 嵌入式系统在当今科技领域中扮演着至关重要的角色,尤其是在实时性要求高的应用中,如工业自动化、物联网设备以及消费电子产品等。本设计报告聚焦于一个嵌入式时钟系统,该系统利用...
标题“XP系统下漂亮的任务栏时钟”所涉及的知识点主要集中在Windows XP操作系统中的任务栏时钟美化。在默认情况下,Windows XP的任务栏时钟显示为标准的数字或模拟样式,但用户可以通过第三方软件来改变这一情况,...
本篇将深入探讨如何利用Microsoft Foundation Classes (MFC)库,在Visual C++环境下构建一款名为"DClock"的时钟程序,该程序能在任务栏通知区显示时钟和日期,提供无窗口界面的便捷体验。 首先,我们需要了解MFC。...
《电子时钟任务书》是针对电子时钟的课程设计,旨在通过实践加深对单片机应用系统的理解和技能掌握。该设计要求制作一个具备自动计时、校准以及定时闹钟功能的数字钟,确保一天内的时差不超过1秒。 在硬件设计方面...
此外,"动感时钟"的定时任务功能更为其增色不少。你可以为特定的任务设定时间,比如每隔一小时提醒喝水,定时进行眼保健操,或者在特定的时间自动开启某种操作,如定时发送邮件。这样的定时任务功能使得日常的健康...
任务栏时钟增强,让 你 的 任 务 栏 大 变 身 !
在基于UCOS-II的多任务与系统时钟课程设计中,学生将学习以下内容: 1. 安装和配置UCOS-II:了解如何在目标平台上移植和配置UCOS-II,包括初始化系统时钟、设置任务数量和优先级等。 2. 创建和管理任务:编写任务...
标题中的“漂亮的任务栏时钟小工具”是指一种能够替换Windows默认任务栏时钟的软件,它提供了多种美观的样式,让用户的电脑桌面...通过安装和设置,用户可以将自己的任务栏时钟变得与众不同,提升电脑使用时的愉悦感。
这种时钟依赖于计算机的运行状态,当计算机关闭时,软时钟将停止工作。 #### 二、软时钟与硬时钟的区别 ##### 2.1 工作原理 - **硬时钟**:采用实时时钟芯片,无需CPU干预即可独立运行,即使计算机关闭也能保持...
"时可通"是一款专为Windows用户设计的时钟升级软件,它将普通的系统时钟扩展为功能丰富的万年历工具。这款软件以其小巧的体积和便捷的特性,深受用户喜爱,尤其对于需要频繁查询农历或者关注阴阳历转换的用户来说,...
在IT领域,任务栏托盘时钟是一种实用的桌面小工具,它能够在系统托盘区域显示时间,为用户提供便捷的时间查看方式。"50多款精美的任务栏托盘时钟"显然是一份集合了多种设计独特、功能丰富的时钟应用资源。这些时钟...
标题中的“spring quartz集群配置”指的是在Spring框架中集成Quartz定时任务调度器,并实现其在集群环境下的配置。Quartz是一款开源的工作调度框架,它允许开发者创建、调度和执行计划任务。在Spring中整合Quartz,...
安装完成后,新时钟应用会集成到Windows系统中,可能是在任务栏右侧的通知区域或者在系统设置中。它应该提供一个界面,让用户可以方便地查看公历和农历日期,甚至可能包含其他附加功能,如提醒、计时器、世界时钟等...
让任务栏时钟读秒
4. 开启后,保存设置,任务栏的时钟将立即开始显示秒。 值得注意的是,这个功能在不同的Windows版本中可能会有所差异。例如,在Windows 10中,设置路径和选项可能略有不同,但总体上,上述步骤基本适用。在Windows ...
单机片电子时钟的设计涉及到单片机技术、实时时钟芯片、液晶显示屏等多个方面。通过单片机与实时时钟芯片的配合,可以实现高精度的时间显示和管理,并通过扩展功能满足多样化需求。这一设计不仅展示了电子技术在时间...
微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄时钟 (源码)微信小程序 番茄...