如何使用Quartz XML插件声明一次性的简单触发器?

Jam*_*nes 5 quartz-scheduler

我正在尝试设置一个作业,使其在我的调度程序第一次启动时运行一次,然后在每天的午夜运行一次。这是我的作业和触发器的XML。每天一次的触发器起作用,但是一次性触发器则不起作用。

    <job>
      <name>MyJob</name>
      <group>MyJobGroup</group>
      <job-type>MyScheduledJob, MyJobAssembly</job-type>
      <description>My job, yo</description>
      <durable>true</durable>
      <recover>false</recover>
    </job>
    <trigger>
      <cron>
        <name>MyTrigger</name>
        <group>MyTriggerGroup</group>
        <job-name>MyJob</job-name>
        <job-group>MyJobGroup</job-group>
        <cron-expression>0 0 0 1/1 * ? *</cron-expression>
      </cron>
        <simple>
            <name>MyOneTimeTrigger</name>
            <group>MyTriggerGroup</group>
            <description>Run once at startup, G</description>
            <misfire-instruction>SmartPolicy</misfire-instruction>
            <volatile>false</volatile>
            <job-name>MyJob</job-name>
            <job-group>MyJobGroup</job-group>
            <repeat-count>0</repeat-count>
            <repeat-interval>0</repeat-interval> 
      </simple>
    </trigger>
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 4

我猜你所说的“不起作用”是指扳机永远不会触发。也许是因为它没有延迟所以失火了?<start-time-seconds-in-future/>未来一段时间再添加怎么样?

<simple>
    <name>MyOneTimeTrigger</name>
    <group>MyTriggerGroup</group>
    <description>Run once at startup, G</description>
    <misfire-instruction>SmartPolicy</misfire-instruction>
    <volatile>false</volatile>
    <job-name>MyJob</job-name>
    <job-group>MyJobGroup</job-group>
    <start-time-seconds-in-future>60</start-time-seconds-in-future>
    <repeat-count>0</repeat-count>
    <repeat-interval>0</repeat-interval> 
</simple>
Run Code Online (Sandbox Code Playgroud)

如果它对您有用,您必须注意一些您可能认为是错误或功能的东西:如果您重新启动服务器,因为触发器已经触发并被删除,它将再次触发。请参阅:Quartz XML 插件在重新启动后重新安排触发的触发器