从Quartz作业中检索数据

时间:2012-03-25 11:28:10

标签: quartz-scheduler

我正在使用Quartz Scheduler,我有一份工作来处理帐户:

public class MyJob implements Job {

    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        List<String> accounts = (List<String>) ctx.getJobDetail().getJobDataMap().get("accounts");
        for(String account : accounts) {
            // process account
        } 
    }

}

这很好用,但我在网页上有一个按钮,当我点击它时,我想看到记录到我网站的进度。 所以在点击按钮时,ajaxcall每秒都会完成,但是如何从这份工作中返回一些内容呢?

将它放在jobDataMap上似乎不起作用。或许我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

一些解决方案:

  1. 将进度存储在外部某处(如数据库或同步map / coutner)。 JobDataMap仅在作业完成时更新。然后,您的AJAX请求可以查询全局进度变量

  2. 与1类似:发送一些事件(JMS?可能更轻量级)并在系统中的其他地方监听该事件。

  3. 而不是一个巨大的工作处理所有帐户安排每个帐户的单个工作。然后,您可以监控每个作业的进度或查看完成的作业数量。