com.netflix.hystrix和org.springframework.cloud.netflix.hystrix两个包下都有HystrixCircuitBreaker

com.netflix.hystrix.HystrixCircuitBreaker是接口,HystrixCircuitBreaker是Hystrix的核心组件,HystrixCircuitBreaker作为断路器使用,有着自己的核心方法:

public interface HystrixCircuitBreaker {
    boolean allowRequest();

    boolean isOpen();

    void markSuccess();
......
}

org.springframework.cloud.netflix.hystrix.HystrixCircuitBreaker是具体类,它是
org.springframework.cloud.client.circuitbreaker.CircuitBreaker接口的一个实现类,和断路器HystrixCircuitBreaker一点关系都没有。

public class HystrixCircuitBreaker implements CircuitBreaker {

	private HystrixCommand.Setter setter;

	public HystrixCircuitBreaker(HystrixCommand.Setter setter) {
		this.setter = setter;
	}

	@Override
	public <T> T run(Supplier<T> toRun, Function<Throwable, T> fallback) {

		HystrixCommand<T> command = new HystrixCommand<T>(setter) {
			@Override
			protected T run() throws Exception {
				return toRun.get();
			}

			@Override
			protected T getFallback() {
				return fallback.apply(getExecutionException());
			}
		};
		return command.execute();
	}
发布了136 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/103878034