spring-cloud之hystrix学习笔记
其他
2021-02-28 15:28:50
阅读次数: 0
入门示例
添加依赖<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
添加注解@EnableHystrix@EnableHystrix
@SpringBootApplication
public class HystrixApplication {
public static void main ( String[ ] args) {
SpringApplication. run ( HystrixApplication. class , args) ;
}
}
编写业务并使用@HystrixCommand配置方法的降级处理@Service
public class UserServiceImpl implements UserService {
@Override
@HystrixCommand ( fallbackMethod = "defaultUser" )
public String getUser ( String username) {
if ( username. equalsIgnoreCase ( "spring" ) ) {
return "this is real user" ;
} else {
throw new RuntimeException ( ) ;
}
}
public String defaultUser ( String username) {
return "The user does not exist in this system" ;
}
}
编写controller测试service代码@RestController
public class UserController {
@Autowired
private UserService userService ;
@GetMapping ( "/getUser" )
public String getUser ( String username) {
return userService. getUser ( username) ;
}
}
feign中使用断路器
添加依赖< dependencies>
< dependency>
< groupId> org.springframework.cloud</ groupId>
< artifactId> spring-cloud-starter-openfeign</ artifactId>
</ dependency>
< dependency>
< groupId> org.springframework.cloud</ groupId>
< artifactId> spring-cloud-starter-netflix-hystrix</ artifactId>
</ dependency>
</ dependencies>
添加@EnableFeignClients,@EnableDiscoveryClient注解@EnableHystrix
@EnableFeignClients
@SpringBootApplication
public class HystrixApplication {
public static void main ( String[ ] args) {
SpringApplication. run ( HystrixApplication. class , args) ;
}
}
打开feign断路配置# feign中hystrix 默认关闭
feign.hystrix.enabled=true
编写feign接口类@Primary
@FeignClient ( name = "client-a" , fallback = UserFeignServiceFallback. class )
public interface UserFeignService {
@RequestMapping ( value = "/getUser" , method = RequestMethod. GET)
String getUser ( @RequestParam ( "username" ) String username) ;
}
编写feign接口降级类@Component
public class UserFeignServiceFallback implements UserFeignService {
@Override
public String getUser ( String username) {
return "The user does not exist in this system, please confirm username" ;
}
}
编写业务方法调用feign接口@RestController
public class UserFeignController {
@Autowired
private UserFeignService userFeignService ;
@GetMapping ( "/getFeignUser" )
public String getUser ( String username) {
return userFeignService. getUser ( username) ;
}
}
转载自 blog.csdn.net/yichengjie_c/article/details/112654347