Чтение электронной почты и хранение очищенных данных в приложении на основе Spring

#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 запрос.