Как выполнить метод спустя какое-то время в Spring MVC приложении?

Необходимо отправить оповещение пользователю спустя какое-то время(условно, через час). Как можно в Spring приложении сделать тайм-аут некий. Будет ли здесь уместен вариант со Thread от многопоточности или есть какие-то более современные и подходящие технологии для работы со временем в Spring?


Ответы (1 шт):

Автор решения: Artur Vartanyan

Spring Schedullers:

В Spring есть интегрированные scheduller-ы. Они очень просты в использовании, настройке, а так же имеют большое количество документации. Их можно настроить как по cron, так и по фиксированным временным интервалам.

Из плюсов:

  1. Одна строка кода - 1 задача(работа с аннотациями).
  2. Достаточное количество документации
  3. Быстрая интеграция и настройка

Из минусов:

  1. При краше scheduller'а не всегда можно отловить ошибку
  2. Сложен в отладке
  3. Логирование нужно прикручивать самому через другие библиотеки

Qaurtz Schedullers:

Есть стороння библиотека, которая так же время от времени дорабатывается и поддерживается. Она не так понятна по документации, как Spring, но имеет встроенное логировании выполнения задач в базу данных.

Из плюсов:

  1. Есть встроенное логирование в базу данных
  2. Легок в отладке

Из минусов:

  1. Очень много кода. Порой для одной задачи нужно создать около 2 классов.
  2. Мало документации.
  3. Долгая интеграция в Spring-проект. Сложная настройка.
→ Ссылка