Получить данные из кварцевого задания - PullRequest
1 голос
/ 25 марта 2012

Я использую 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 голосов
/ 28 марта 2012

Некоторые решения:

  1. Сохранение прогресса где-нибудь извне (например, в базе данных или синхронизированной карте / coutner).JobDataMap обновляется только после завершения задания.Ваш запрос AJAX может затем запросить глобальную переменную прогресса

  2. Аналогично 1 .: отправить какое-то событие (JMS? Может быть, что-то более легковесное) и прослушать это событие где-то еще в вашей системе.

  3. Вместо одной огромной обработки работы все учетные записи планируют одну работу для каждой учетной записи.Затем вы можете отслеживать ход выполнения каждого отдельного задания или видеть, сколько заданий завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...