Аннотация Spring @Retryable не работает в приложении весенней загрузкиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Аннотация Spring @Retryable не работает в приложении весенней загрузки

Сообщение Anonymous »


Я пытаюсь реализовать механизм повтора, используя Spring Retry. Однако повторные попытки не работают. Я добавил аннотацию @EnableRetry в основной класс

Ниже приведен код класса обслуживания. Я хочу повторить метод getProductMetadata 3 раза в случае исключения. Исключением является ошибка 502.

import com.google.gson.Gson; импортировать org.slf4j.Logger; импортировать org.slf4j.LoggerFactory; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.beans.factory.annotation.Value; импортировать org.springframework.http.HttpHeaders; импортировать org.springframework.http.HttpStatus; импортировать org.springframework.http.ResponseEntity; импортировать org.springframework.retry.annotation.Backoff; импортировать org.springframework.retry.annotation.EnableRetry; импортировать org.springframework.retry.annotation.Recover; импортировать org.springframework.retry.annotation.Retryable; импортировать org.springframework.stereotype.Service; импортировать lombok.extern.slf4j.Slf4j; импортировать org.springframework.web.client.RestTemplate; @Услуга @Slf4j общественный класс ProductService { частная строка productInfoBaseUrl = "http://localhost"; @Value("${service.product.metadata}") частная строка productInfoPathProductMetadata; частный статический окончательный регистратор Logger = LoggerFactory.getLogger(ProductService.class); @Autowired RestTemplate restTemplate; число интервалов = 0; @Retryable(retryFor = Exception.class, maxAttempts = 5, откат = @Backoff(delay = 100)) public ProductResponse getProductMetadata(String sku, HandlerResult handlerResult) { Заголовки HttpHeaders = новые HttpHeaders(); headers.add(HttpHeaders.CONTENT_TYPE, "application/json"); Строка errorMsg; Конечная точка строки = getProductFetchMetadataEndpoint(); Ответ ResponseEntity; пытаться { ответ = restTemplate.getForEntity(конечная точка, String.class); } catch (исключение ex) { errorMsg = "getProductMetadata для sku: " + sku + " выдал исключение: " + ex.getMessage(); //log.info(errorMsg); HandlerResult.updateStatus(handlerResult, errorMsg, false); logger.info(++count + "Попытки вызова были предприняты"); вернуть ноль; } Метаданные ProductResponseResponse; Gson gson = новый Gson(); пытаться { метаданныеResponse = gson.fromJson(response.getBody(), ProductResponse.class); } catch (Исключение е) { errorMsg = String.format("Исключение ProductResponse, преобразующее %s в карту", response.getBody()); log.info(errorMsg); HandlerResult.updateStatus(handlerResult, errorMsg, false); вернуть ноль; } вернуть метаданныеОтвет; } частная строка getProductFetchMetadataEndpoint() { вернуть ProductInfoBaseUrl + «/» + ProductInfoPathProductMetadata + «/»; } } Может кто-нибудь подсказать мне, чего мне не хватает?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»