Как предотвратить откаты Hystrix, вызванные определенными исключениями в интерфейсе @FeignClient?


Недавно мне было поручено определить запасной вариант для наших существующих фиктивных клиентов в наших проектах весенней загрузки. Я провел небольшое исследование и, по-видимому, Hystrix - это то, что нужно.

После интеграции с проектом я заметил, что каждый раз, когда я не получаю желаемый ответ от целевой службы (например, когда я получаю ответ со статусом http 403 вместо 200) , клиент переключается на резервный метод.
Что ж, в нашем случае это не тот поток. После поиска решений я обнаружил, что HystrixCommands - правильный способ справиться с этой проблемой. Согласно это я мог бы использовать @HystrixCommand, чтобы предотвратить запуск отката.
Я сделал это, но похоже, что это не работает.
Мой вопрос в том, как настроить hystrix в соответствии со своими потребностями.

Вот простая версия того, что я придумал:

@FeignClient(name="test-client", fallback=TestClientFallback.class)
public interface TestClient
{
   //---I have emplemented a custom FeignDecoder to throw TestException
   @HystrixCommand(ignoreExceptions=TestException.class)
   Boolean isUserActive(Integer userId);

   public class TestClientFallback implements TestClient
   {
      @Override
      public Boolean isUserActive(Integer)
      {
          //---default fail over scenario
      }
   }

}

Заранее спасибо.


person M-Soley    schedule 29.06.2021    source источник
comment
Учитывая, что вы добавляете hystrix в проект (и не меняете какой-то код, который уже использует hystrix), я считаю, что стоит взглянуть на resilience4j github.com/resilience4j/resilience4j. Hystrix больше не находится в активной разработке, даже resilience4j рекомендуют для новых проектов :)   -  person V. Lovato    schedule 20.07.2021