Очередь почтового запроса Spring Boot - PullRequest
0 голосов
/ 14 января 2020

Я использую весеннюю загрузку (2.2.2) для доступа и редактирования некоторых листов Excel, вызывая бота, а также предоставляя API для просмотра данных, и у меня возникают проблемы с поиском информации о задачах очередей.

Нужный мне бот - это устаревший код, к которому я не могу прикоснуться, который запускается через командный файл, читает лист Excel и выполняет задачи на основе содержимого листа. У меня есть пост-запрос, который обновляет лист, но проблема в том, что мне нужно достаточно времени между отправленными заданиями, чтобы бот мог читать лист Excel, указывающий c для каждого задания. Бот читает только один лист, сохраненный в указанном c месте.

Когда отправляются 2 задания в одно и то же время, я получаю что-то вроде этого

2020-01-14 13:38:11.808  INFO 9236 --- [nio-8080-exec-2] BOT status                               : Job Started
2020-01-14 13:38:13.464  INFO 9236 --- [nio-8080-exec-3] BOT status                               : Job Started
2020-01-14 13:38:16.830  INFO 9236 --- [nio-8080-exec-2] BOT status                               : Job sent to BOT
2020-01-14 13:38:18.216  INFO 9236 --- [nio-8080-exec-3] BOT status                               : Job sent to BOT 

Там, где задания перекрываются, и я не могу быть уверен, что бот получил шанс прочитать правильную версию каждая работа.

Как получить почтовые запросы для постановки в очередь заданий и ожидания завершения одного задания до его обработки?

1 Ответ

0 голосов
/ 14 января 2020

вы можете использовать Spring boot @ EnableAsyn c и @EnableRetry вместе для организации очередей. Как только вы получите запрос, начните обработку запроса в отдельном потоке, используя аннотацию @ Asyn c. В методе Asyn c проверьте, обрабатываете ли вы уже запрос, а затем создайте пользовательское исключение. Используя пользовательское исключение, вы можете использовать аннотацию Spring Boot @Retryable, чтобы через некоторое время повторить неудачное выполнение. Вы можете использовать некоторую базу данных для хранения статуса обработки задания.

Пожалуйста, отметьте https://www.baeldung.com/spring-retry для @EnableRetry https://www.baeldung.com/spring-async для @ EnableAsyn c связанных конфигураций .

...