查看代码详细:https://blog.csdn.net/qq_43868329/article/details/103627679
雪崩效应
包结构
Cloud01Contriller中创建两个路径
@RestController
public class Cloud01Contriller {
@Resource
private MemberService memberService;
@RequestMapping("/getOrderByMember")
public String getOrderByMember(){
return memberService.getMember();
}
@RequestMapping("/getOrderInfo")
public String getOrderInfo(){
return "getOrderInfo";
}
}
application.yml
##应用名称
spring:
application:
name: eureka02
##声明当前eurekaserver的端口号
server:
port: 8893
tomcat:
max-threads: 50
##配置eureka
eureka:
client:
##配置地址
service-url:
defaultZone: http://localhost:8888/eureka
##配置ribbon读取时间
ribbon:
ReadTimeout: 15000
ConnectTimeout: 15000
##开启断路器
feign:
hystrix:
enabled: true
##因为我们在members服务中线程休眠3s,服务调用默认超过1s当做调用失败,那么就会执行服务降级的类,我们可以配置服务响应时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 4000
MemberServiceFallBack
import org.springframework.stereotype.Component;
/**
* 本地服务
*/
@Component
public class MemberServiceFallBack implements MemberService {
@Override
public String getMember() {
return "服务降级";
}
//MemberService
}
启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class cloud
{
public static void main( String[] args )
{
SpringApplication.run(cloud.class, args);
}
}
打开apache-jmeter-2.13\bin\jmeter.bat
编写线程数
右键线程组
点击上方启动绿色启动标,然后在浏览器就可以查看效果
Rest方式实现熔断
导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
package com.zzc.Cloud02Controller;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.zzc.service.MemberService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
public class Cloud01Contriller {
@Resource
private RestTemplate restTemplate;
@RequestMapping("/getCloudByMember")
//如果运行中断回运行getCloudHystrix方法
@HystrixCommand(fallbackMethod ="getCloudHystrix")
public String getCloudByMember(){
return restTemplate.getForObject("http://eureka02/doSome",String.class);
}
public String getCloudHystrix(){
return "服务中断";
}
}
在启动类中添加@EnableHystrix注解,添加负载均衡
可以吧application.yml中
feign:
hystrix:
enabled: true
注释掉不然可能报错,因为在启动类中的@EnableHystrix注解就是开启断炉器,如果两个都开起就重复了
运行测试
可以先注释下面这个
运行结果
加hystrix:。。。结果