使用 JMX 和 RMI 遠程管理 Quartz
方法1: JMX
很多人詢問如何通過 JMX 來管理 Quertz,很奇怪的是 Quartz 的文檔完全沒有提及這方面的問題,你可以在 quartz.properties 中通過以下配置來啟用 JMX 的支持:
org.quartz.scheduler.jmx.export = true
然后你就可以使用標準的 JMX 客戶端,例如 $JAVA_HOME/bin/jconsole 來連接到 Quartz 并進行遠程管理。
方法2: RMI
另外一個遠程管理 Quartz 的方法就是啟用 RMI。如果你用的是 RMI 的方式,就會自動一個 Quartz 實例來作為 RMI 服務器,然后你可啟動第二個 Quartz 實例來作為 RMI 客戶端,二者通過 TCP 端口進行通訊。
服務器端調度實例配置方法(quartz.properties):
org.quartz.scheduler.rmi.export = true org.quartz.scheduler.rmi.createRegistry = true org.quartz.scheduler.rmi.registryHost = localhost org.quartz.scheduler.rmi.registryPort = 1099 org.quartz.scheduler.rmi.serverPort = 1100
客戶端調度器配置(quartz.properties):
org.quartz.scheduler.rmi.proxy = true org.quartz.scheduler.rmi.registryHost = localhost org.quartz.scheduler.rmi.registryPort = 1099
關于 Quartz 的 RMI 特性的文檔描述請看 這里. Quartz 不提供客戶端 API,服務器端和客戶端都是使用 org.quartz.Scheduler,只是配置不同而已。通過不同的配置來執行不同的行為。對服務器端來說,調度器用來執行所有的作業;而客戶端只是一個簡單的代理,不運行任何作業,在關閉客戶端的時候必須小心,因為它允許你也同時關閉服務器端。
這些配置都在我的示例程序 MySchedule 中有著重說明,如果你運行的是 Web 應用,你可以看到 這個演示,你將看到我們提供了很多 quartz 的示例配置用來做遠程管理。
如果使用 RMI 方法,你可以用 MySchedule Web UI 做為一個代理來管理 Quartz,你可以查看作業,可停止服務器的運行。
根據我的經驗,使用 RMI 方法的弊端就是創建一個新的單點故障,如果你的服務器端口宕掉了,就無法恢復。
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!