Производительность Spring Retry - PullRequest
0 голосов
/ 22 февраля 2019

Я использую пружинный повтор в моем приложении, он работает нормально.Тем не менее, я просто беспокоюсь о том, не вызовет ли это проблемы с производительностью, если имеется огромный объем повторных попыток

, скажем, один из нисходящих сервисов не работает, и, прежде чем он возвращается, поступает 1 миллион запросовзатем он съест весь ресурс службы для нормальной работы.

есть ли какое-то решение для этого?

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Когда за короткое время ожидаются миллионы запросов, spring-retry @CircuitBreaker может помочь прекратить вызывать нисходящую систему и снизить влияние на производительность.

   @CircuitBreaker(value = {RunTimeException.class},
            maxAttempts =  2,
            openTimeout = 2000L ,
            resetTimeout = 20000L) 
        public void myMethod(String aaa){
        retryTemplate.execute(args0 -> {
            // your business logic goes here
            return null;
        });
    }
0 голосов
/ 22 февраля 2019

Это просто мнение или предложение использовать Spring-retry (что я делаю в моем случае).

  1. Восстановление
  2. Политика отката.
  3. число повторов.

Spring-retry позволяет пользователю определять метод нескольких повторных попыток для разных исключений.

Вы должны обрабатывать эти исключения соответственно .. как, если методс некоторыми серьезными исключениями, следует ли вам попробовать или нет (вы должны решить) ..

Предложение :: Аннотация @Recover используется для определения отдельного метода восстановления при сбое метода @Retryableс указанным исключением.Вы можете сохранить объект в базе данных для дальнейшей обработки.

 @Recover
 void recover(SQLException e, String sql){ // Your Code of Handling...}

Теперь, если вы знаете, что возникшее исключение может быть обработано при следующей повторной попытке, вам следует применить политику BackOff.так что с этим можно справиться соответственно ..

...