Quartz教程 第11课 高级(企业级)特性
来源:互联网 发布:淘宝一次破损补寄条款 编辑:程序博客网 时间:2024/06/05 10:48
第11课 高级(企业级)特性
11.1 集群
当前的集群需要和JDBCJobstore (JobStoreTX或JobStoreCMT)和TerracottaJobStore一起工作。这个特定包括负载均衡和job容错(如果JobDetail的“请求恢复”标志设置为true的话)。
####使能JobStoreTX或JobStoreCMT的集群,需要将“org.quartz.jobStore.isClustered”属性设置为true。集群中的一个scheduler实例都要使用同一份quartz.properties文件。完全相同的属性文件,可以允许下面的例外:不同的线程池大小,不同的“org.quartz.scheduler.instanceId”属性值。集群中的每一个节点必须具有唯一的instanceId,这很容易实现(不需要不同的属性文件),只需要将这个属性的值设置为AUTO即可。
注意:从来不要在分离的机器上运行集群,除非它们的时钟是同步的,使用一些时间同步服务(守护进程)且运行非常规律(the clocks must be within a second of each other)。如果不知道如何实现,请参见http://www.boulder.nist.gov/timefreq/service/its.htm。
从来不要在经被其它实例运行的相同数据表上触发非集群实例。这可能会发生严重数据错误,一定会出现不稳定的行为。
每一次触发,都只有一个节点会触发job。我说的意思是,如果job有一个重复trigger,告诉它每10s触发一次,那么在12:00:00只有一个节点会运行这个job,在12:00:10也只有一个节点会运行这个job,等等。每一次不必是同一个节点:它在哪个节点上运行是随机的。对于忙碌的scheduler(有许多trigger)来说,负载均衡机制几乎是随机的,但是对于不忙碌的scheduler来说,更喜欢用相同的处于active的节点。
####使用TerracottaJobStore的集群,简单配置scheduler使用TerracottaJobStore(第9课 JobStore介绍了),你的scheduler都是用于集群的。
你也想要考虑如何设置Terracotta服务器,尤其是打开特性的配置选项,例如持久化,运行一组Terracotta服务器以实现HA。
TerracottaJobStore的企业级版本提供了高级的Quartz Where特性,它允许智能的将job定向到合适的集群节点上。
关于JobStore和Terracotta的更多信息,请访问http://www.terracotta.org/quartz
11.2 JTA事务
如第9课 JobStore介绍的,JobStoreCMT允许Quartz在更大的JTA事务中执行调度操作。
Jobs要想在JTA事务中执行(UserTransaction),要将属性“org.quartz.scheduler.wrapJobExecutionInUserTransaction”设置为true。如果设置了这个属性,在调用Job的execute方法之前,JTA事务会调用begin()方法,在execute结束之后会才调用commit()方法,适用于所有的Job。
如果你想要指定job是否让JTA事务包装它的执行,那么你应该在Job类上使用@ExecuteInJTATransaction注解。
除了Quartz会自动将Job执行包装到事务中,当使用JobStoreCMT时,Scheduler接口上的调用也会参与到事务中。在调用scheduler的方法之前,要确保已经启动了事务。你可以通过使用UserTransaction直接启动,或者将你的代码放到使用容器托管事务的SessionBean中。
- Quartz教程 第11课 高级(企业级)特性
- Quartz 框架 教程(中文版)2.2.x 之第十一课:高级(企业级)特性
- Quartz教程 第12课 Quartz的其它特性
- Quartz.net官方开发指南 第十一课: 高级(企业级)属性
- Quartz.net官方开发指南 第十一课: 高级(企业级)属性
- Quartz教程 第1课 使用Quartz
- Quartz 框架 教程(中文版)2.2.x 之第十二课:Quartz其他特性
- Quartz教程 第2课 Quartz API、Job和Trigger
- Quartz教程 第4课 Trigger详解
- Quartz教程 第5课 SimpleTrigger
- Quartz教程 第6课 CronTrigger
- Quartz教程 第8课 SchedulerListener
- Quartz教程 第9课 JobStore
- JSP简明教程(五):高级特性
- PostgreSQL教程(三):高级特性
- quartz 企业级
- PostgreSQL教程 -part2高级特性
- Quartz教程 第3课 Job和JobDetail详解
- PHP的错误和异常笔记
- 线上服务CPU100%问题快速定位实战
- (转)高盛如何在全球布局金融科技?
- 移动开发知识架构图(10月23日更新)
- 第七周 项目一 建立顺序环形队列算法库
- Quartz教程 第11课 高级(企业级)特性
- mysql的sql执行计划详解(非常有用)
- NOIP模拟赛 斐波那契树 + 二分 + 并查集
- js学习语句篇
- 23岁INFJ女孩的2个理想:“躺着看电影赚钱,翻译文学巨著名垂青史。”
- ffmpeg开发之旅(8):Android UVC Camera(USB摄像头)开发核心技术详解
- IPv6简介
- Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash
- OpenCV—透视变换warpPerspective