Я создаю небольшой пример приложения с помощью простого средства запуска задач для локального запуска новых задач (spring-cloud-deployer-local:2.2.2.RELEASE)
. Код ниже получает события через поток и запускает новые задачи локально, как и ожидалось.
@EnableTaskLauncher
@SpringBootApplication
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
Я хочу ограничить число одновременно выполняемых задач, скажем, 5. Я могу настроить это с помощью свойств приложения, таких как:
spring:
application:
deployer:
local:
maximum-concurrent-tasks: 5
И это работает, как и ожидалось если запущено 5 задач и запущена другая задача, генерируется исключение, как и ожидалось.
Проблема, с которой я столкнулся, заключается в том, что задание, которое не удалось запустить, теперь потеряно, и действие типа «повтор» не происходит.
Кто / как / где должен обрабатывать событие повтора? Я просто выталкиваю задачи в поток, это ответственность службы, которая подталкивает эти задачи к pu sh снова той же задаче?
Должен ли я использовать что-то вроде Spring Batch для управления этим?