У вас есть Spring Retry для этого конкретного случая использования. Вы можете указать, какие условия сбоя вы хотите повторить, и есть также метод recover
, который можно использовать для восстановления в случае сбоя.
Вы можете включить повтор, используя аннотацию @EnableRetry длякласс конфигурации.
@Configuration
@EnableRetry
public class AppConfig { ... }
А затем используйте аннотацию @Retryable, как это. Вы можете настроить, какие исключения необходимо повторить, на какой интервал повторять и количество повторных попыток.
@Service
public interface MyService {
@Retryable(value = { SQLException.class }, maxAttempts = 2, backoff = @Backoff(delay = 5000))
void retryService(String sql) throws SQLException;
}
Вы можете найти более подробную информацию и примеры здесь и официальные документы здесь .