许多人问他们是否可以通过JMX管理Quartz,但我不确定为什么Quartz doc甚至不会提及它。 是的,您可以使用quartz.properties
的以下命令启用石英中的JMX
org.quartz.scheduler.jmx.export = true
之后,您可以使用标准的JMX客户端(例如$JAVA_HOME/bin/jconsole
进行远程连接和管理。
选项2:RMI
远程管理石英的另一种方法是在Quartz中启用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
RMI的功能在石英文档提到这里 。 Quartz没有客户端 API,但是对服务器和客户端使用相同的org.quartz.Scheduler
。 只是配置有所不同。 通过不同的配置,您将获得截然不同的行为。 对于服务器,您的调度程序正在运行所有作业,而对于客户端,它只是一个代理。 您的客户端调度程序实例将不会运行任何作业! 关闭客户端时必须非常小心,因为它确实允许您关闭服务器!
这些配置已在MySchedule项目中突出显示。 如果运行webapp,您应该会看到一个类似于此demo的屏幕,您将看到它提供了具有这些远程管理配置属性的许多石英配置示例。
如果使用RMI选项进行配置,实际上您仍然可以使用MySchedule Web UI将Quartz作为代理进行管理。 您可以查看和追溯作业,甚至可以停止或关闭远程服务器!
根据我的经验,虽然有使用Quartz RMI功能的缺点。 那就是它造成了单点故障。 如果您的RMI服务器端口已关闭,则不会进行故障转移!
参考: 如何在A Programmer's Journal博客上从我们的JCG合作伙伴 Zemian Deng 远程管理Quartz 。
翻译自: https://www.javacodegeeks.com/2012/08/how-to-manage-quartz-remotely.html