2012-05-07 2 views
1

Мне нужен механизм для реализации асинхронного планирования заданий на Java и смотрел на Quartz Scheduler, но, похоже, он не предлагает необходимых функций.Асинхронное планирование в Java с использованием кварца

В частности, мое приложение, которое проходит через разные узлы, имеет веб-интерфейс, через который пользователи планируют несколько разных заданий. Когда задание завершено (когда-нибудь в будущем), оно должно отчитываться перед пользовательским интерфейсом, чтобы пользователь был проинформирован о его статусе. До тех пор пользователь должен иметь возможность редактирования или отмены запланированного задания.

Подход внедрения должен состоять в том, чтобы поток планировщика постоянно работал в фоновом режиме в одном из узлов и собирал определения JobDetail для выполнения задания.

В любом случае, есть два вопросы (применимы как для одного-узла или сценария многоузлового):

  1. ли Кварц позволяет модификацию или аннулирование уже запланированное задание?
  2. Как реализовать механизм «обратного вызова», чтобы результат выполнения задания был возвращен в пользовательский интерфейс?

Любые примеры кода, или указатели, приветствуются.

ответ

4
  1. Предоставляет ли кварц модификацию или отмену уже запланированной работы?

Вы можете "запланированную" работа:

scheduler.unscheduleJob(triggerKey("trigger1", "group1")); 

Или удалить задание:

scheduler.deleteJob(jobKey("job1", "group1")); 

Как описано в документации:

http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/UnscheduleJob

Примечание, основное различие между этими двумя нечеткими редактирование задания удаляет данный триггер, в то время как удаление задания удаляет все триггеры для заданного задания.

  1. Как можно реализовать механизм обратного вызова, чтобы результат выполнения задания был возвращен в пользовательский интерфейс?

Как правило, в мире Интернета вы будете опробовать веб-сервер для внесения изменений. В зависимости от вашего веб-фрейма может быть доступен компонент (Push, Pull, Poll?), Который делает это проще. Кроме того, вам нужно будет сохранить некоторое состояние о вашей работе на сервере. После завершения задания вы можете обновить значение в базе данных или, возможно, в памяти. Это, в свою очередь, будет подхвачено опросом и отобразится для пользователя.

Смежные вопросы