protected void configureCircuitBreaker(String name, CircuitBreaker circuit, CircuitBreakerConfig config) { long resetMillis = config.getResetMillis(); Long resetMillisOverride = getLongPropertyOverrideValue(name, RESETMILLIS_KEY); if (resetMillisOverride != null) { resetMillis = resetMillisOverride; } FailureInterpreter fi = config.getFailureInterpreter(); circuit.setFailureInterpreter(fi); if (resetMillis > 0) { circuit.setResetMillis(resetMillis); } if (fi instanceof DefaultFailureInterpreter) { configureDefaultFailureInterpreter(name, resetMillis, circuit); } else { logger.info( "Created CircuitBreaker '{}', resetMillis={}", new Object[] { name, resetMillis }); } }
circuitBreakerAnnotation.windowMillis()); CircuitBreakerConfig config = new CircuitBreakerConfig( circuitBreakerAnnotation.resetMillis(), dfi);
/** * If packageScanBase is defined will search packages for {@link org.fishwife.jrugged.aspects.CircuitBreaker} * annotations and create circuitbreakers for them. */ public void buildAnnotatedCircuitBreakers() { if (packageScanBase != null) { AnnotatedMethodScanner methodScanner = new AnnotatedMethodScanner(); for (Method m : methodScanner.findAnnotatedMethods(packageScanBase, org.fishwife.jrugged.aspects.CircuitBreaker.class)) { org.fishwife.jrugged.aspects.CircuitBreaker circuitBreakerAnnotation = m.getAnnotation(org.fishwife.jrugged.aspects.CircuitBreaker.class); DefaultFailureInterpreter dfi = new DefaultFailureInterpreter(circuitBreakerAnnotation.ignore(), circuitBreakerAnnotation.limit(), circuitBreakerAnnotation.windowMillis()); CircuitBreakerConfig config = new CircuitBreakerConfig(circuitBreakerAnnotation.resetMillis(), dfi); createCircuitBreaker(circuitBreakerAnnotation.name(), config); } } }