使用自定义触发器和参数计划作业

我正在使用Grails Quartz插件,并希望使用程序创建的触发器来安排我的作业。 我不知道执行间隔会是什么。 我希望工作无限期地执行。

文档给出了一些如何计划/触发作业的例子:

==动态作业调度==

从0.4.1版本开始,您可以动态安排作业执行。

这些方法可用:

  • MyJob.schedule(String cronExpression, Map params?)创建cron触发器;
  • MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?)创建简单的触发器:重复执行repeatCount + 1次,延迟repeatInterval毫秒;
  • MyJob.schedule(Date scheduleDate, Map params?)将一项作业执行安排到特定日期;
  • MyJob.schedule(Trigger trigger)使用自定义触发器来安排作业的执行;
  • MyJob.triggerNow(Map params?)强制立即执行作业。

    每个方法(自定义触发器除外)都有可选的'params'参数。 您可以使用它将一些数据传递给您的工作,然后从工作中访问它。

  • Grails版本1.3.7 Quartz插件版本0.4.2

    那么,为什么MyJob.schedule(Trigger trigger)不带参数? 而且,如何使用自定义触发器和地图或参数来实现我想要的功能?


    如果你在Quartz插件源代码中查看这些方法的定义,你可以看到所有带Map params的函数都是包装器,它们创建一个Trigger ,然后将其发送给调度器。

    MyJob.schedule(Trigger trigger)方法只是触发你传递的触发器,所以在你调用这个方法之前,你需要将你的参数添加到Triggers jobDataMap属性中,例如:

    trigger.jobDataMap.putAll [foo:"It Works!"]
    MyJob.schedule( trigger )
    

    tim答案是正确的,这里有点更新。

    Trigger trigger = TriggerBuilder
                    .newTrigger()
                    .startNow()
                    .withIdentity("triggerName", "groupName")
                    .withSchedule(
                    SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(5000).repeatForever()
                    ).build();
            trigger.jobDataMap.putAll([foo:"bar"])
            MyJob.schedule(trigger)
    
    链接地址: http://www.djcxy.com/p/23623.html

    上一篇: Schedule Job with custom Trigger and params

    下一篇: Undoing git reset?