Spring托管调度程序状态

时间:2014-11-12 14:05:20

标签: spring

有没有办法检查当前在spring应用程序上下文中管理的调度程序列表? 我有一个应用程序,我已配置石英调度程序,我想检查该调度程序是否处于活动状态(我不是说调度程序当前正在执行该作业)。 这类似于通过调用该Web资源的URL并检查响应(200或404)来检查Web资源是否处于活动状态。

感谢。

1 个答案:

答案 0 :(得分:0)

根据您的需要,您可以执行以下操作之一:

  • 如果您只需要在应用程序启动期间检查此项,则只需检查日志即可。石英开始时记录。您需要配置您的记录器以在调试模式下记录“org.springframework.scheduling.quartz”命名空间
  • 要随时检查调度程序是否已启动,您可以使用quartz jmx功能。只需在quartz属性文件中添加“org.quartz.scheduler.jmx.export = true”即可启用此功能。然后,您可以打开一个针对您的应用程序的JConsole,当它打开时,下面会有一个“石英”节点,您将找到各种属性和操作。第一个实际上是“已启动”,如果启动调度程序,这将是真实的,这是你所要求的,但也有很多其他人

如果您不知道如何打开JConsole,请参阅https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html上的sun文档,因为这是一个不同的主题,而且在这里描述的内容太多了

  • 您也可以通过注入您希望从中访问它的Scheduler bean并调用scheduler.isStarted()方法,以编程方式访问此类信息。但是这样你就可以实现一种以某种方式按需公开这些信息的方式
  • 如果您使用石英数据库,您还可以选择在QRTZ_SCHEDULER_STATE表中检查如果调度程序正在运行,则每隔几秒检查一次更改