Как выполнить метод спустя какое-то время в Spring MVC приложении?
Необходимо отправить оповещение пользователю спустя какое-то время(условно, через час). Как можно в Spring приложении сделать тайм-аут некий. Будет ли здесь уместен вариант со Thread от многопоточности или есть какие-то более современные и подходящие технологии для работы со временем в Spring?
Ответы (1 шт):
Spring Schedullers:
В Spring есть интегрированные scheduller-ы. Они очень просты в использовании, настройке, а так же имеют большое количество документации. Их можно настроить как по cron, так и по фиксированным временным интервалам.
Из плюсов:
- Одна строка кода - 1 задача(работа с аннотациями).
- Достаточное количество документации
- Быстрая интеграция и настройка
Из минусов:
- При краше scheduller'а не всегда можно отловить ошибку
- Сложен в отладке
- Логирование нужно прикручивать самому через другие библиотеки
Qaurtz Schedullers:
Есть стороння библиотека, которая так же время от времени дорабатывается и поддерживается. Она не так понятна по документации, как Spring, но имеет встроенное логировании выполнения задач в базу данных.
Из плюсов:
- Есть встроенное логирование в базу данных
- Легок в отладке
Из минусов:
- Очень много кода. Порой для одной задачи нужно создать около 2 классов.
- Мало документации.
- Долгая интеграция в Spring-проект. Сложная настройка.