飞翔飞翔
主页
  • 计算机基础

    • TCP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 前言

    • 1.起步
  • 第1章 快速入门指南

    • 1.下载和安装
    • 2.配置
    • 3.运行一个简单的应用
  • 第2章 Quartz教程

    • 1.使用Quartz
    • 2.Quartz API、作业和触发器
    • 3.更多关于作业和作业详细信息
    • 4.更多关于触发器
    • 5.简单触发器
    • 6.Cron触发器
    • 7.触发器监听器和作业监听器
    • 8.调度程序监听器
    • 9.作业存储JobStore
    • 10.配置、资源使用和调度器工厂
    • 11.高级(企业)功能
    • 12.Quartz的其他特征
    • 13.专题之Corn触发器教程
  • 第3章 15个官网示例

    • 概览
    • 1.示例1 - 你的第一个Quartz程序
    • 2.示例2 - 简单触发器
    • 3.示例3 - Cron触发器
    • 4.示例4 - 作业状态和参数
    • 5.示例5 - 处理作业失误
    • 6.示例6 - 处理作业异常
    • 7.示例7 - 中断作业
    • 8.示例8 - 日历带来的乐趣
    • 9.示例9 - 作业监听器
    • 10.示例10 - 使用Quartz插件
    • 11.示例11 - 高负载下的Quartz
    • 12.示例12 - 使用RMI的远程作业调度
    • 13.示例13 - 集群化的Quartz
    • 14.示例14 - 触发器优先级
    • 15.示例15 - TC集群化的Quartz

高级(企业)功能

集群【Clustering】

集群目前使用JDBCJobStore(JobStoreTX或JobStoreCMT)和TerracottJobStore。功能包括负载平衡和作业故障转移(如果JobDetail的“请求恢复”标志设置为true)。

通过将“org.quartz.jobStore.isClustered”属性设置为“true”来启用JobStoreTX或JobStoreCMT群集。集群中的每个实例都应该使用相同的quartz.properties副本文件。例外情况是使用相同的属性文件,但允许的例外情况如下:不同的线程池大小,以及org.quartz.scheduler.instanceId属性的不同值。集群中的每个节点都必须有一个唯一的实例ID,通过将AUTO作为该属性的值,这一点很容易实现(不需要不同的属性文件)。

不要在单独的机器上运行集群,除非它们的时钟使用某种形式的时间同步服务(守护进程)进行同步,这种服务非常有规律地运行(时钟必须在一秒钟之内)。如果你不熟悉怎么做,参考(http://www.boulder.nist.gov/timefreq/service/its.htm)[http://www.boulder.nist.gov/timefreq/service/its.htm]。

永远不要针对任何其他实例正在运行的同一组表启动非集群实例。这可能会导致严重的数据损坏,并且肯定会经历不稳定的行为。

每次作业触发只有一个节点被触发。意思是,如果作业有一个重复触发器,告诉它每10秒启动一次,那么在12:00:00时,正好有一个节点将运行该作业,而在12:00:10时,正好一个节点会运行该作业等。它不一定每次都是同一个节点——运行它的节点或多或少是随机的。负载平衡机制对于忙调度器(很多触发器)几乎是随机的,但对于非忙调度器(例如,一个或两个触发器),它支持刚刚处于活动状态的同一节点。

使用TerracottJobStore集群只需将调度器配置为使用TerracottaJobStore(在第9课:作业存储中介绍),您的调度器将全部设置为集群。

您可能还需要考虑如何设置Terracotta服务器的含义,特别是启用持久性等功能的配置选项,以及为HA运行一系列Terracotta服务。

JTA事务

如第9课:作业存储中所述,JobStoreCMT允许在较大的JTA事务中执行Quartz调度操作。

通过将org.quartz.scheduler.wrapJobExecutionInUserTransaction属性设置为"true",作业也可以在JTA事务(UserTransaction)中执行。设置此选项后,JTA事务将在调用作业的execute()方法之前调用begin()方法,而commit()方法将在执行调用终止之后开始。这适用于所有作业。

如果您希望为每个作业指示JTA事务是否应包装其执行,则应在作业类上使用@ExecuteInJTATransaction注解。

除了Quartz在JTA事务中自动包装作业执行外,在使用JobStoreCMT时,在调度器接口上进行的调用也会参与事务。只需确保在调用调度程序上的方法之前已启动事务。您可以通过使用UserTransaction直接执行此操作,也可以将使用调度器的代码放在使用容器管理事务的SessionBean中。

上一页
10.配置、资源使用和调度器工厂
下一页
12.Quartz的其他特征