#java #rest #spring-boot #spring-data #spring-batch
#java #остальное #весенняя загрузка #spring-данные #spring-пакет
Вопрос:
Я работаю на сервере на основе Spring Boot, который предлагает конечные точки REST. Это типичное приложение Controller — Service — Spring Data.
В новом требовании я должен очищать электронные письма из нескольких почтовых папок и использовать некоторые из этих компонентов данных Service — Spring для хранения информации, извлеченной с помощью очистки.
Очистка электронной почты должна быть запланирована (или выполняться как задание) в контексте Spring. Эта программа может быть горизонтально масштабирована на нескольких экземплярах AWS, на которых работает REST server, описанный выше.
Вопрос: У меня есть следующие опции для запуска задания чтения электронной почты и очистки.
1. Разработайте конечную точку REST, предназначенную для выполнения этой операции, и задание CRON, которое запускает скрипт, который периодически вызывает REST.
2. Проверьте возможность использования Spring Batch, которые инициируют задание, которое напрямую вызывает компоненты Service — Spring Data для сохранения данных.
Пожалуйста, предложите, подходит ли Spring Batch для архитектурного выбора, учитывая масштабируемость, необходимую для этого компонента.
Спасибо за ваше время! Если у вас есть параллельный вариант, пожалуйста, предложите и это. 🙂
Комментарии:
1. Если конечная точка rest будет вызываться только cron, зачем вообще иметь конечную точку rest? У Spring действительно есть возможности планировщика. Мне кажется, что вам может быть лучше использовать это, а затем потенциально добавить конечную точку rest для запуска заданий по требованию
2. @Leon Да, в Spring действительно есть возможности планировщика. Вероятно, это то, что я ищу. Вот руководство Spring, которое я нашел, и оно очень хорошее: spring.io/guides/gs/scheduling-tasks . Спасибо, что предложили это!
3. В дополнение к этому вы можете использовать Quartz, которые имеют серверную часть базы данных, которая гарантирует, что выполняется только 1 запрос.