Merge pull request #623 from garyrussell/INT-2748

* INT-2748:
  INT-2748 Change CircuitBreaker Exception
This commit is contained in:
Oleg Zhurakousky
2012-09-18 09:07:25 -04:00
2 changed files with 13 additions and 5 deletions

View File

@@ -20,7 +20,6 @@ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.springframework.integration.Message;
import org.springframework.integration.MessagingException;
/**
* A circuit breaker that stops calling a failing service after threshold
@@ -56,7 +55,7 @@ public class RequestHandlerCircuitBreakerAdvice extends AbstractRequestHandlerAd
}
if (metadata.getFailures().get() >= this.threshold &&
System.currentTimeMillis() - metadata.getLastFailure() < this.halfOpenAfter) {
throw new MessagingException("Circuit Breaker is Open for " + target);
throw new CircuitBreakerOpenException("Circuit Breaker is Open for " + target);
}
try {
Object result = callback.execute();
@@ -92,4 +91,13 @@ public class RequestHandlerCircuitBreakerAdvice extends AbstractRequestHandlerAd
}
}
private class CircuitBreakerOpenException extends RuntimeException {
private static final long serialVersionUID = 1L;
public CircuitBreakerOpenException(String message) {
super(message);
}
}
}

View File

@@ -304,7 +304,7 @@ public class AdvisedMessageHandlerTests {
fail("Expected failure");
}
catch (Exception e) {
assertEquals("Circuit Breaker is Open for baz", e.getMessage());
assertEquals("Circuit Breaker is Open for baz", e.getCause().getMessage());
}
Thread.sleep(100);
try {
@@ -319,7 +319,7 @@ public class AdvisedMessageHandlerTests {
fail("Expected failure");
}
catch (Exception e) {
assertEquals("Circuit Breaker is Open for baz", e.getMessage());
assertEquals("Circuit Breaker is Open for baz", e.getCause().getMessage());
}
Thread.sleep(100);
doFail.set(false);
@@ -344,7 +344,7 @@ public class AdvisedMessageHandlerTests {
fail("Expected failure");
}
catch (Exception e) {
assertEquals("Circuit Breaker is Open for baz", e.getMessage());
assertEquals("Circuit Breaker is Open for baz", e.getCause().getMessage());
}
}