Аннотации Resilience4j и @timeLimiter для тайм-аута и отмены потока – CompletableFutureJAVA

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

Сообщение Anonymous »


Мне сложно отменить/прервать задачу CompletableFuture, поэтому на контроллере истекает время ожидания, но выполнение клиента не останавливается, даже если это занимает больше времени

Чего мне не хватает? чтобы иметь возможность отменить выполнение моего клиента по таймауту

У меня есть следующая услуга:

@TimeLimiter(name = "ly-service-timelimiter", FallbackMethod = "fallFn") @Bulkhead (name = «ly-service-bulkhead», FallbackMethod = «fallFn», type = Bulkhead.Type.THREADPOOL) @Override public CompletableFuture myMethod(запрос запроса) выдает исключение { пытаться { log.info("Служба MyMethod: {}", request); вернуть client.myMethod(запрос); } catch (RuntimeException e) { log.info("Исключение", запрос); выдать новое RuntimeException(e); } } Клиент

public CompletableFuture myMethod(Запрос запроса) { CompletableFuture будущее = новый CompletableFuture(); CompletableFuture.runAsync(() -> { если (future.isCancelled()) { log.info("МойМетод был отменен перед выполнением."); возвращаться; } пытаться { log.info("Обработка запроса", запрос); ThreadUtil.fakeRandomSleep(10000); // Имитация работы если (future.isCancelled()) { log.info("Обработка была отменена во время выполнения."); } еще { log.info("Маршрутизация завершена с TimeOut"); будущее.завершено (нуль); } } catch (Исключение е) { log.info("completeExceptionally......"); Future.completeExceptionally(e); } }); вернуть будущее; } Контроллер:

@GetMapping("/runTimeOut") public @ResponseBody String ExecutionSample() выдает ExecutionException, InterruptedException { log.info("Выполнить конечную точку таймаута"); Запрос запроса = Request.builder().build(); //Любой класс пытаться { myService.myMethod(запрос).get(); }catch (ExecutionException ex){ if(ex.getCause() экземпляр java.util.concurrent.TimeoutException){ log.info("Произошло исключение TimeoutException"); } вернуть «Не удалось»; } вернуть «ОК»; } Моя конфигурация:

resilience4j: переборка: конфиги: по умолчанию: максимальное количество одновременных вызовов: 2 максимальная продолжительность ожидания: 0 мс экземпляры: ly-сервис-переборка: базовая конфигурация: по умолчанию ограничитель времени: экземпляры: ly-service-timelimiter: таймаутПродолжительность: 900 мс отменить-работающее будущее: правда Мои библиотеки
org.springframework.boot spring-boot-starter-parent 3.1.2 ... org.springframework.boot spring-boot-starter-aop org.springframework.boot привод-стартер-пружина io.github.resilience4j resilience4j-spring-boot2 2.1.0
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование Resilience4j TimeLimiter в методах обслуживания
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как «спать» до тех пор, пока не будет запрошено отмены тайм -аута или отмены
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки тайм-аута — увеличьте значение тайм-аута отправки при привязке.
    Anonymous » » в форуме C#
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки тайм-аута — увеличьте значение тайм-аута отправки при привязке.
    Anonymous » » в форуме C#
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Запись запрещена из-за тайм-аута или отмены
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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