Предложения по распределенному планированию задач и очереди заданий при весенней загрузке - PullRequest
0 голосов
/ 25 апреля 2019

ТРЕБОВАНИЕ:

В моем проекте (выполняется в распределенной среде) у нас есть требование, чтобы задание планировалось на фиксированное время с начальной задержкой в ​​1 минуту, и оно будет повторяться, если выполнение задания не выполнено, и может выполнить максимальную повторную попытку 10 раз. с задержкой 2 минуты между каждым.

ИНСТРУМЕНТЫ, С КОТОРЫМИ МЫ МОЖЕМ ДОСТИГНУТЬ ЖЕ:

Я могу достичь той же необходимой функциональности с помощью spring-retry. Но есть несколько доступных контейнеров (распределенная среда). Такие инструменты, как Rabbit-MQ, Amazon-sqs, Redis-quartz поддерживают эту функцию. Но я не уверен, какой из них лучше для Springboot.

ФАКТОРЫ ДЛЯ РАССМОТРЕНИЯ:

Ниже приведены материалы, которые необходимо учитывать при выборе правильных инструментов:

Распределенная среда
Консистенция
Отказоустойчивость
Простота настройки
Асинхронная обработка

ВОПРОС

По сути, я ищу что-то похожее на эквивалентную реализацию Resqueue и sidekiq ruby ​​в Java (springBoot). Кто-нибудь достиг такой же функциональности в своем приложении? Если это так, что будет лучшим выбором / способом, обеспеченным за и против. Предложения приветствуются.

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете использовать Spring's RetryTemplate, который легко настроить.

Вы можете использовать SimpleRetryPolicy с FixedBackOffPolicy в вашем случае. Максимальное количество повторных попыток можно настроить с помощью свойства backOffPeriod, присутствующего в SimpleRetryPolicy, в соответствии с вашими требованиями (в вашем случае - 2 минуты).

Этот механизм повтора легко подключить к проектам Spring Boot.

...