繁体   English   中英

Quartz在启动时运行作业

[英]Quartz run job on startup

我正在尝试每天在特定时间和服务器启动时运行一个工作,以确保数据是最新的。 不幸的是我不知道如何设置石英在使用xml文件的服务器启动时运行。 这是我的日程安排:

<schedule>
    <job>
        <name>UpdateDashboardStats</name>
        <group>UpdateDashboardStats</group>
        <description>Updating Dashboard Statistics</description>
        <job-class>utils.UpdateDashboardStats</job-class>
    </job>

    <trigger>
        <cron>
            <name>UpdateDashboardStats</name>
            <job-name>UpdateDashboardStats</job-name>
            <job-group>UpdateDashboardStats</job-group>
            <!-- It will run at 1am every day -->
            <cron-expression>0 0 1 * * ?</cron-expression>
        </cron>
    </trigger>
    <trigger>
        <simple>
            <name>UpdateDashboardStatsStartup</name>
            <job-name>UpdateDashboardStats</job-name>
            <job-group>UpdateDashboardStats</job-group>
            <description>Run once at startup</description>
            <misfire-instruction>SmartPolicy</misfire-instruction>
            <repeat-count>0</repeat-count>
            <repeat-interval>10</repeat-interval>
        </simple>
    </trigger>
</schedule>

我不认为只使用XML配置启动调度程序:您还需要构建启动调度程序的实例。 只需使用以下命令以编程方式启动Scheduler:

scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();
try {
    scheduler.start();
} catch (SchedulerException e) {
    logger.error("Error getting scheduler status", e);
}

这足以触发XML中定义的触发器(在quartz.properties中引用)。


..但是如果您正在使用容器 (如Apache Tomcat),请使用Listener或Servlet仅使用XML启动Scheduler。 请参阅官方文档。

正如zerologiko所提到的,Quartz调度程序必须运行才能选择石英xml。

您如何验证Quartz调度程序是否正在运行。

如果你的工作在预定的时间运行,你能否提一下? 让它第一次运行会很容易。

因为你已经有了自己的工作。 您可以将其作为单独的计划执行,不会重复。 只执行一次

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM