Quartz 框架 教程(中文版)2.2.x 之第十一课:高级(企业级)特性

原文地址:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/tutorial-lesson-11

 

第十一课:高级(企业级)特性

集群

     使用JDBC-JobStoreJobStoreTxJobStoreCMT)和TerracottaJobStore可以集群并发工作。特性包含负载均衡和作业任务故障切换(当JobDetails的“请求恢复”标记设置为true)。

 

使用JobStoreTx或JobStoreCMT集群

    设置“org.quartz.jobStore.isClustered”参数为true可以开启集群功能。集群中的每个实例都应该使用相同的quartz.properties文件。使用相同的属性文件后可以有不同的属性,下面的几条允许例外:不同的线程池大小,“org.quartz.scheduler.instanceId”属性值可以不相同。集群的每一个节点必须有独一无二的instanceId,把该属性值设置为“AUTO”就可以很容易达到这个要求。(不需要不同的属性文件)

    不要在不同的计算机上运行Quartz集群,除非它们的时钟是使用时间同步服务(后台服务)同步过的,运行非常有规律(每台计算机的时间误差在1秒内)。如果你不熟悉怎么同步可以看这里:http://www.boulder.nist.gov/timefreq/service/its.htm

    不要在集群中任何节点运行的一套表中存在非集群实例的运行。你可能会导致严重的数据问题,并且肯定会遇到不稳定的行为。

    每次只会有一个节点的作业任务被触发。我的意思是,如果一个作业任务有重复的触发器显示每10秒触发一次,然后在12:00:00准点时集群中的一个节点会执行作业任务,在12:00:10时也是一个节点执行作业任务。它不一定每次都是同一个节点——它或多或少会随机选择一个节点去执行。负载均衡机制是就近随机的忙碌调度(大量的触发器)而倾向于选取活跃而不繁忙调度(例如只有一两个触发器)的节点。

 

使用TerracottaJobStore的集群

    使用TerracottaJobStore简单地配置调度器(在第九课:JobStores讲过),你的调度器将全部设置为集群。

    你可能还需要考虑如何设置您的Terracotta服务器的影响,尤其是打开功能的配置选项如持久化,运行Terracotta服务器的高可用性集群

    企业版本的TerracottaJobStore提供高级Quartz功能,即允许作业任务智能定位到合适的集群节点上。

    更多关于JobStoreTerracotta的信息可以参照:http://www.terracotta.org/quartz

 

JTA 事务

     从第九课:JobStores介绍可知,JobStoreCMT允许Quartz调度操作在大型JTA事务中执行。

     当"org.quartz.scheduler.wrapJobExecutionInUserTransaction"属性设置为true时,作业任务也可以在一个JTA事务(用户事务)中执行。使用此选项设置,JTA事务将在作业任务execute方法调用前开始,并且execute结束之后立即提交。这适用于所有作业任务。

     如果你想标明每个作业任务的执行是否嵌套一个JTA事务,你可以在job类中使用注解@ExecuteInJTATransaction

     除了Quartz自动地将作业任务执行嵌套进JTA事务,当你的调度器接口使用JobStoreCMT时,也可以加入事务。只是要确保你在调度器调用方法前要启动一个事务。你可以通过使用UserTransaction直接执行此操作,或者把你的代码放到有管理事务容器的SessionBean中的调度器里。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值