У меня есть метод, который состоит из пяти команд, некоторые из них являются вызовами отдыха для внешней системы, некоторые подсчитывают некоторые значения, а некоторые просто сохраняют что-то в базе данных.
Может случиться, что такой метод завершится неудачнои исключение выбрасывается.Каждый шаг выдает уникальное исключение, поэтому у меня есть информация, какой шаг не выполнен, и могу ли я возобновить поток позже (скажем, я всегда могу возобновить).У меня есть один основной объект, который можно рассматривать как контекст выполнения, поэтому в случае ошибки я могу сохранить этот объект с информацией, с какого шага продолжить, и могу легко восстановить этот контекст.
Возобновление будет выполненопозже, вручную или с какой-либо работы, которая читает мои объекты и решает, нужно ли их возобновлять.
Поскольку у меня много таких составных / возобновляемых команд, я ищу библиотеку, которая поможет мне управлятьв общем случае.
Возможности, которые я обнаружил:
- Spring Retry (и многие подобные библиотеки) - не удается возобновить, только перезапустите
- , используяФреймворки рабочих процессов - они обычно тяжелые и довольно сложные
- Spring Batch - также довольно тяжелые и сложные, но поддерживают возобновление
- Фреймворки заданий, такие как Quartz - похоже, не поддерживают возобновление
Есть еще идеи?