Невозможно использовать ControllerAdvice с ExceptionHandlers при использовании Circuit Breaker из resilience4j.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно использовать ControllerAdvice с ExceptionHandlers при использовании Circuit Breaker из resilience4j.

Сообщение Anonymous »


Итак, я делал простой проект весенней загрузки, используя инструменты 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», но ничего.

Есть идеи? Или мне следует отказаться от этой мысли и просто управлять исключениями внутри службы?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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