您的位置:首页 > 编程语言 > Java开发

java B2B2C源码电子商务平台 -SpringCloud整合Hystrix

2018-12-26 08:39 309 查看

SpringCloud整合Hystrix
需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码:壹零叁八柒柒肆六二六
由于服务调用者有可能调用服务挂掉的提供者,服务调用方整合Hystrix

引入依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

主启动开启断路器

@SpringBootApplication
@EnableEurekaClient
//开启断路器
@EnableCircuitBreaker
public class SaleApp {

@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}

public static void main(String[] args) {
new SpringApplicationBuilder(SaleApp.class).web(true).run(args);
}
}

服务调用service修改

@Service
//对这个类采用全局默认的回退机制,回退方法不能带参数,例如:“getMemberFallback”没有参数
//@DefaultProperties(defaultFallback = "getMemberFallback")
public class MemberService {

@Autowired
private RestTemplate restTpl;

//1、@HystrixCommand、@HystrixProperty这些注解不是SpringCloud注解,而是Hystrix框架提供的
//2、fallbackMethod当修饰具体方法时,fallbackMethod方法的参数和修饰方法保持一致
@HystrixCommand(fallbackMethod = "getMemberFallback", groupKey = "MemberGroup", commandKey = "MemberCommandKey",
commandProperties = {
//超时熔断
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000")
}, threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "2")
})
public Member getMember(Integer id) {
try {
Thread.sleep(500);
} catch (Exception e) {

}

Member member = restTpl.getForObject(
"http://spring-hy-member/member/{id}", Member.class, id);
return member;
}

public Member getMemberFallback(Integer id) {
Member m = new Member();
m.setId(1);
m.setName("error member");
return m;
}
}

注意:
@DefaultProperties:可以配置全局回退机制,回退方法不能带参数,例如:“getMemberFallback”没有参数
@HystrixCommand、@HystrixProperty这些注解不是SpringCloud注解,而是Hystrix框架提供的
fallbackMethod当修饰具体方法时,fallbackMethod方法的参数和修饰方法保持一致
企业级java springcloud b2bc商城系统开源源码二次开发

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: