在Spring Cloud中,服务熔断和降级通常是通过Hystrix框架实现的。以下是一个使用Hystrix的服务降级示例:
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class HelloService {
private final RestTemplate restTemplate;
public HelloService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@HystrixCommand(fallbackMethod = "fallbackHello")
public String helloService() {
return restTemplate.getForObject("http://hello-service/hello", String.class);
}
public String fallbackHello() {
return "Hello Service is not available. Falling back.";
}
}
在这个例子中,helloService
方法调用了 hello-service
服务的 /hello
端点。@HystrixCommand
注解用于定义熔断逻辑,其中 fallbackMethod
指定了在服务调用失败时执行的方法 fallbackHello
。如果 hello-service
不可用,fallbackHello
方法将被调用,并返回一个提示信息。
确保你的项目中包含了Hystrix依赖,并且你的应用程序有一个RestTemplate
bean用于服务间调用。
<!-- 在pom.xml中添加Hystrix依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
启用Hystrix:
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableCircuitBreaker
public class HystrixConfig {
}
在你的主应用类或配置类上添加 @EnableCircuitBreaker
注解来启用Hystrix。