Ich teste Frühling Wolke Schutzschalter und ich vermisse den Punkt, wie man tatsächlich „circuitBreaker.requestVolumeThreshold“ Parameter funktioniert eigentlich ... mein Beispiel ansehen ...circuitBreaker.requestVolumeThreshold funktioniert nicht wie erwartet
@HystrixCommand(
fallbackMethod = "invokeMicroServiceFallback",
commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",
value = "30000"),
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",
value = "2"),
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",
value = "500"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds",
value = "180000")
},
threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "30"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds",
value = "180000")
})
public void invokeMicroService() {
final RestTemplate restTemplate = new RestTemplate();
final ServiceInstance serviceInstance = loadBalancer.choose("personsService");
if (serviceInstance != null) {
System.out.println("Invoking instance at URL: "+serviceInstance.getUri());
System.out.println("Result :"+
restTemplate.getForObject(serviceInstance.getUri()+"/persons",
String.class));
} else {
System.out.println("Service is down...");
throw new IllegalStateException("PersonsService is not running!");
}
}
public void invokeMicroServiceFallback() {
System.out.println("Waiting for circuit-breaker to close again...");
}
Wenn ich drehe den personsService nach unten und rufen invokeMicroService in der Schleife dann habe ich eine Menge Ausgang bekam wie:
Erstens:
Invoking instance at URL: <URL at my service>;
"Waiting for circuit-breaker to close again..."
dann nach einiger Zeit, j ust wiederholt:
Service is down...
"Waiting for circuit-breaker to close again..."
was hier eigentlich circuitBreaker.requestVolumeThreshold tut? Warum habe ich mehr als zwei Versuche, auf PersonenService zuzugreifen?
Dank im Voraus ...