1

Как я могу реализовать несколько zuulFallbackProvider для множественной маршрутизации zuul. Я не могу ответить на вопрос, как это сделать, используя свойства только за исключением того, что выставляете restcontroller и реализуете метод с помощью hystrixcommand.Zuul Внедрение нескольких ZuulFallbackProvider для нескольких маршрутов zuul

Могу ли я сделать каждое из своих сервисов своим собственным компонентом zuulFallBackProvider?

application.yml

server: 
     port: 8080 

    hystrix: 
     command: 
     default: 
      execution: 
      isolation: 
       thread: 
       timeoutInMilliseconds: 20000 

    ribbon: 
     ReadTimeout: 20000 
     ConnectTimeout: 20000 

    zuul: 
     prefix: /api 
     ignoredServices: '*' 
     host: 
     connect-timeout-millis: 20000 
     socket-timeout-millis: 20000 
     routes: 
     kicks-service: 
      path: /kicks/** 
      serviceId: kicks-service 
      stripPrefix: false 
      sensitiveHeaders: 
     kicks-inventory: 
      path: /inventory/** 
      serviceId: kicks-inventory 
      stripPrefix: false 
      sensitiveHeaders: 

Это мой образец приложение

@SpringBootApplication 
    @EnableDiscoveryClient 
    @EnableZuulProxy 
    public class GatewayApplication { 

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

     @Bean 
     public Prefilter prefilter(){ 
      return new Prefilter(); 
     } 

     @Bean 
     public ZuulFallbackProvider zuulFallbackProvider() { 
      return new ZuulFallbackProvider() { 
       @Override 
       public String getRoute() { 
        return "kicks-inventory"; 
       } 

       @Override 
       public ClientHttpResponse fallbackResponse() { 
        return new ClientHttpResponse() { 
         @Override 
         public HttpStatus getStatusCode() throws IOException { 
          return HttpStatus.OK; 
         } 

         @Override 
         public int getRawStatusCode() throws IOException { 
          return 200; 
         } 

         @Override 
         public String getStatusText() throws IOException { 
          return "OK"; 
         } 

         @Override 
         public void close() { 

         } 

         @Override 
         public InputStream getBody() throws IOException { 
          return new ByteArrayInputStream("fallback".getBytes()); 
         } 

         @Override 
         public HttpHeaders getHeaders() { 
          HttpHeaders headers = new HttpHeaders(); 
          headers.setContentType(MediaType.APPLICATION_JSON); 
          return headers; 
         } 
        }; 
       } 
      }; 
     } 
    } 

ответ

0

У вас может быть резервный поставщик по умолчанию для всех маршрутов, в противном случае вам нужен резервный провайдер по маршруту.

Если вы хотите, чтобы обеспечить запасной вариант по умолчанию для всех маршрутов, чем вы можете создать компонент типа ZuulFallbackProvider и имеют метод getRoute возврата * или нуль.

http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html