目前集羣能夠運行在JDBC-Jobstore (JobStoreTX o或者JobStoreCMT) 和TerracottaJobStore中。集羣的特性包括負載均衡和故障轉移(若是JobDetail的「request recovery」標識被設置爲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。spa
在已經有運行中實例相關聯的表上不要再運行新的非集羣實例。不然你的數據可能會收到嚴重的破壞,而且會遇到不穩定的運行結果。線程
每次觸發只有一個節點會運行該任務。 個人意思是,若是做業有一個重複的觸發器,每隔10秒觸發一次,那麼在12:00:00,剛好有一個節點將運行該任務,而且在12:00:10,一樣只有一個節點將運行......它不必定每次都是同一節點 —— 它或多或少會隨機運行它。負載均衡機制對於繁忙的調度器(正在執行多個任務)會近似隨機的選擇,可是對於活躍的非繁忙的調度器(只有一兩個觸發)會分配更多的任務。htm
#### 使用TerracottaJobStore進行集羣只需將調度程序配置爲使用TerracottaJobStore(第9課:JobStores中介紹),而且您的調度程序將所有設置爲集羣。接口
您可能還想考慮如何設置您的Terracotta服務器,特別是打開諸如持久性等功能的配置選項,以及運行一系列用於HA的Terracotta服務器。進程
TerracottaJobStore的企業版提供了先進的Quartz Where功能,能夠將做業智能地定位到適當的集羣節點。事務
有關此JobStore和Terracotta的更多信息,請訪問http://www.terracotta.org/quartz同步
如第9課:JobStores所述,JobStoreCMT容許Quartz調度操做在較大的JTA事務中執行。it
經過將「org.quartz.scheduler.wrapJobExecutionInUserTransaction」屬性設置爲「true」,做業也能夠在JTA事務(UserTransaction)中執行。經過設置此選項,JTA事務將在任務的execute()方法被調用以前開啓,並緊接着執行調用終止後提交。這適用於全部任務。
若是你只想讓單個做業被事務包裝運行,那麼你只須要在任務類上使用@ExecuteInJTATransaction註釋。
除了Quartz會將你的任務自動包裹在事務中,在使用JobStoreCMT時,你經過Scheduler接口進行的調用也會參與事務。在調用Scheduler的方法以前,確保你已經開始了一個事務。您能夠經過使用UserTransaction直接執行此操做,也能夠將使用調度程序的代碼放入使用容器管理事務的SessionBean中。