Почему необходимо расширять Hystrix-команду или использовать @Hystrix-команду на шлюзе и резервную функцию Hystrix?

#dynamic #gateway #hystrix

Вопрос:

Почему необходимо расширять Hystrix-команду или использовать @Hystrix-команду на шлюзе и резервную функцию Hystrix ? Код в этом URL-адресе : https://github.com/shzxj/gateway-hystrix.git Я хочу использовать динамический маршрут в yml. Что мне делать ? Кто может мне помочь?

код контроллера:

 @GetMapping("/fallback")
public String fallback() {
    return "fallback";
}

@GetMapping("/test")
public String test() {
    try {
        sleep(2000L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "test";
}
 

код начального класса :

 @SpringBootApplication
public class ApiGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }

}
 

приложение.yml

 server:
  port: 8000

logging:
  level:
    root: INFO

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      default-filters:
        - name: Hystrix
          args:
            name: fallbackcmd
            fallbackUri: forward:/fallback
      routes:
        - id: api-gateway
          uri: http://localhost:8000
          order: 0
          predicates:
            - Path=/gateway/**
          filters:
            - StripPrefix=1
            - name: Hystrix
              args:
                name: fallbackcmd
                fallbackUri: forward:/fallback

filters:
  - name: Hystrix
    args:
      name : default
      fallbackUri: forward:/fallback

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 100
    fallbackcmd:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 100
    circuitBreaker:
      forceOpen: true

ribbon:
  ReadTimeout: 100
  ConnectTimeout: 100
 

Запасной вариант работает, когда запрашивается несуществующий путь «/test_error».
Запасной вариант не работает при запросе пути «/test».