Я пытаюсь заставить свой метод обслуживания повторить попытку при сбое с помощью Springs @ Retryable.
@Retryable(backoff = @Backoff(delay = 1000), maxAttempts = 3)
@Transactional(rollbackFor = Throwable.class)
public Something saveSomething(Something something) {
//some logic and saving
}
Проблема в том, что исключение появляется после сохранения объекта-объекта.Таким образом, транзакция откатывается и метод вызывается снова.Разница в том, что id объекта-объекта больше не является нулевым, а значением, которое он получил от предыдущего процесса сохранения в Hibernate, поэтому во второй попытке Hibernate не сохраняет объект, а пытается его обновить.Поскольку в БД нет записей, обновление ничего не делает, и объект не сохраняется в БД.
После распознавания этого я попытался установить для свойства @ful для свойства stateful значение true:
@Retryable(backoff = @Backoff(delay = 1000), maxAttempts = 3, stateful = true)
@Transactional(rollbackFor = Throwable.class)
public Something saveSomething(Something something) {
//some logic and saving
}
Но с этой конфигурацией saveSomething () просто вызывается один раз, а der - не вторая попытка.
Кто-нибудь предлагал решить эту проблему?