Весна @ запланирована после перезапуска сервера - PullRequest
1 голос
/ 25 января 2012

Я создаю механизм на своем веб-сервере, посредством которого запланированное задание будет выполняться каждые 15 минут и уведомлять пользователей, если в течение этого периода времени произошли какие-либо действия. Это будет работать следующим образом:

  1. Аннотировать с @Scheduled и планировать запуск каждые 15 минут
  2. Когда задача запускается, очистите базу данных для любых изменений в течение 15 минут текущего времени

Я вижу пару проблем:

  • Если мне нужно перезапустить сервер, и он не работает дольше 15 минут, мне нужно оглянуться назад дольше, чем на 15 минут, чтобы не пропустить ни одной операции.
  • Я использую несколько серверов Tomcat, и только один из них должен выполнить задачу. В противном случае, дубликаты электронных писем будут отправлены пользователям.

Кто-нибудь имел дело с этим раньше? Я думаю, что это действительно должна быть задача, внешняя по отношению к веб-серверам ... которая решит проблему отправки дубликатов электронных писем, но не решит проблему отказов сервера.

Буду очень признателен за любые идеи о том, как решить!

1 Ответ

1 голос
/ 25 января 2012

Я бы выполнил следующие шаги для планирования:

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

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

...