Аннотация Spring @Retryable не работает в приложении весенней загрузки ⇐ JAVA
Аннотация Spring @Retryable не работает в приложении весенней загрузки
Я пытаюсь реализовать механизм повтора, используя 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 + «/»; } } Может кто-нибудь подсказать мне, чего мне не хватает?
Я пытаюсь реализовать механизм повтора, используя 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 + «/»; } } Может кто-нибудь подсказать мне, чего мне не хватает?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Весна @retryable аннотация - зачем пытаться восстановиться на неописуемых исключениях?
Anonymous » » в форуме JAVA - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Весна @retryable аннотация - зачем пытаться восстановиться на неописуемых исключениях?
Anonymous » » в форуме JAVA - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Аннотация @EnableEurekaclient устарела в версии весенней загрузки 3.9.1.
Anonymous » » в форуме JAVA - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Аннотация @EnableEurekaclient устарела в версии весенней загрузки 3.9.1.
Anonymous » » в форуме JAVA - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-