Невозможно использовать ControllerAdvice с ExceptionHandlers при использовании Circuit Breaker из resilience4j. ⇐ JAVA
Невозможно использовать ControllerAdvice с ExceptionHandlers при использовании Circuit Breaker из resilience4j.
Итак, я делал простой проект весенней загрузки, используя инструменты resilience4j, такие как @RateLimiter, @CircuitBreaker и @Retry. Все работало нормально, даже с персонализированными исключениями, поскольку они были перехвачены моим сервисом.
Теперь я хочу, чтобы моя служба просто генерировала исключения и управляла обработкой в @RestControllerAdvice с помощью @ExceptionHandler(s) вместо того, чтобы перехватывать исключения и управлять ими. внутри сервиса, как я вижу многие так делают. Это также имеет смысл, поскольку в этом случае служба делает только то, что ей нужно, а исключениями может управлять другой класс.
Проблема в том, что, судя по тому, что я видел (не так уж много), все эти люди, которые так делают, тоже не используют @CircuitBreaker. Если быть более конкретным, проблема заключается в том, что исключения сначала перехватываются резервным методом прерывателя цепи, а не обработчиками исключений.
Вот код:
@CircuitBreaker(name = «clientCircuitBreaker», FallbackMethod = «fallbackCircuitBreaker») @Retry(name="clientRetry") @RateLimiter(name="clientRateLimiter", FallbackMethod = "fallbackRateLimiter") @GetMapping public ResponseEntity getClient(@RequestParam long doc) { вернуть this.clientService.getClient(doc); } public ResponseEntity FallbackCircuitBreaker (Throwable исключение) { вернуть this.clientService.fallbackCircuitBreaker(исключение); } //... @RestControllerAdvice общественный класс GlobalExceptionHandler { @ExceptionHandler(IErrorException.class) public ResponseEntitypersonalizedException(IErrorException ex) { return ResponseEntity.status(404).body(ex.getErrorModel()); } //... } Я также пытался изменить тип @ExceptionHandler на более конкретный (и заставить его выдавать это исключение), потому что там есть интерфейсный/абстрактный класс, но ничего. Я также пытался использовать конфигурацию ignoreExceptions(..) для автоматического выключателя в файле конфигурации Java, игнорируя «IErrorException.class», но ничего.
Есть идеи? Или мне следует отказаться от этой мысли и просто управлять исключениями внутри службы?
Итак, я делал простой проект весенней загрузки, используя инструменты resilience4j, такие как @RateLimiter, @CircuitBreaker и @Retry. Все работало нормально, даже с персонализированными исключениями, поскольку они были перехвачены моим сервисом.
Теперь я хочу, чтобы моя служба просто генерировала исключения и управляла обработкой в @RestControllerAdvice с помощью @ExceptionHandler(s) вместо того, чтобы перехватывать исключения и управлять ими. внутри сервиса, как я вижу многие так делают. Это также имеет смысл, поскольку в этом случае служба делает только то, что ей нужно, а исключениями может управлять другой класс.
Проблема в том, что, судя по тому, что я видел (не так уж много), все эти люди, которые так делают, тоже не используют @CircuitBreaker. Если быть более конкретным, проблема заключается в том, что исключения сначала перехватываются резервным методом прерывателя цепи, а не обработчиками исключений.
Вот код:
@CircuitBreaker(name = «clientCircuitBreaker», FallbackMethod = «fallbackCircuitBreaker») @Retry(name="clientRetry") @RateLimiter(name="clientRateLimiter", FallbackMethod = "fallbackRateLimiter") @GetMapping public ResponseEntity getClient(@RequestParam long doc) { вернуть this.clientService.getClient(doc); } public ResponseEntity FallbackCircuitBreaker (Throwable исключение) { вернуть this.clientService.fallbackCircuitBreaker(исключение); } //... @RestControllerAdvice общественный класс GlobalExceptionHandler { @ExceptionHandler(IErrorException.class) public ResponseEntitypersonalizedException(IErrorException ex) { return ResponseEntity.status(404).body(ex.getErrorModel()); } //... } Я также пытался изменить тип @ExceptionHandler на более конкретный (и заставить его выдавать это исключение), потому что там есть интерфейсный/абстрактный класс, но ничего. Я также пытался использовать конфигурацию ignoreExceptions(..) для автоматического выключателя в файле конфигурации Java, игнорируя «IErrorException.class», но ничего.
Есть идеи? Или мне следует отказаться от этой мысли и просто управлять исключениями внутри службы?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Автоматический выключатель Resilience4j: не работает при использовании с декораторами
Anonymous » » в форуме JAVA - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Метод отступления в приложении Spring Boot не вызывается при использовании Resilience4J
Anonymous » » в форуме JAVA - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-