java - Fallback methods at Zuul server in Spring cloud -
i new in spring cloud netflix , have questions concerning it.
 using api gateway hystrix running @ zuul edge server , make sure if understand following behavior correctly:
i kill microservice running "behind" api gateway force hystrix open circuit. after (ca 10 seconds) send request non-running microservice , receive timeout error. when send many (tens) of requests in short time (up 1 sec), receive shortcircuit open error.
 surprised why receive timeout error although circuit open , therefore hystrix should come play avoid such kind of failures. guess reason if time since last request > circuitbreaker.sleepwindowinmilliseconds, api gateway tries connect microservice  again check if it's alive, wasn't, -> timeout. explain, why got shortcircuit open error on many requests in short time.  
the next thing receive "timeout" or "shortcircuit" error got:
hystrixruntimeexception: microservice (timed-out | short-circuited) , no fallback available how can specify fallback @ zuul server (this can same routes) avoid exception ?
 have tried until now:  
- according this set execution isolation strategy thread avoid time-out: - hystrix: command.default.execution.isolation.strategy: thread 
but after looking @ hystrix.stream got propertyvalue_executionisolationstrategy":"semaphore"
- there seems hint solution on github writing custom ribboncommand , overriding getfallback(), after looking @ ribboncommand interface. found out, neither ribboncommand nor super interfaces doesn't define such method.
my api gateway service:
@springbootapplication @enablesidecar // annotation includes @enablecircuitbreaker, @enablediscoveryclient, , @enablezuulproxy @enablehystrixdashboard public class apigatewayapplication {      public static void main(string[] args) {         springapplication.run(apigatewayapplication.class, args);     }  } application.yml
server:   port: 10000 sidecar:   port: 8000 endpoints:   restart:     enabled: true   shutdown:     enabled: true   health:     sensitive: false eureka:   client:     registerwitheureka: true     fetchregistry: true     serviceurl:       defaultzone: http://localhost:8761/eureka/ zuul:   routes:     microservice:       path: /microservice/**  hystrix:   command.default.execution.isolation.strategy: thread  debug: true 
the latest release supports fallback @ zuul level. done extending zuulfallbackprovider. please visit below link example: https://github.com/spring-cloud-samples/zuul-server/blob/master/src/main/java/zuulserver/zuulserverapplication.java
the fallback triggering not done types of route configurations (for eg if have url based config)
"these simple url-routes don’t executed hystrixcommand nor can loadbalance multiple urls ribbon."
Comments
Post a Comment