Open

网友投稿 286 2022-12-11

Open

目录一、服务端 1、配置文件JokfEnWrJ2、控制层二、客户端1、依赖2、配置文件3、启动类4、在控制层当中调用5、创建一个类实现服务FeignClient接口6、在服务FeignClient接口上配置FallBack实现类三、测试1、场景一服务正常调用2、场景二当被调服务停止运行时3、场景三当调取服务超时时4、其他

一、服务端

1、配置文件

application.yml

server:

port: 9000

spring:

application:

name: my-test2 #服务的名称

2、控制层

@RestController

public class ShoppingController {

@RequestMapping("/myTestBuy2")

public String myTestBuy2(){

//用来模拟服务超时

try {

Thread.sleep(6000);

} catch (InterruptedException e) {

e.printStackTrace();

}

return "购买成功——时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

}

}

二、客户端

1、依赖

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

2、配置文件

server:

port: 8000

spring:

application:

name: my-test1 #服务的名称

#允许服务降级配置

feign:

hystrix:

enabled: true

#自定义ribbon的超时时间 设置的要比hystrix-timeoutInMilliseconds超时时间大

ribbon:

#指的是建立连接后从服务器读取到可用资源所用的时间。

ReadTimeout: 10000

#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间,处理请求的超时时间,默认为5秒。

ConnectTimeout: 10000

hystrix:

command:

default:

execution:

isolation:

thread:

#feign整合hystrix 光设置Hystrix超时没用的 要配合ribbon超时

timeoutInMilliseconds: 5000

my-test2:

url: http://127.0.0.1:9000

3、启动类

@SpringBootApplication

@EnableFeignClients//开启open-feign

@EnableHystrix//开启降级熔断服务

public class MyTestApplication1 {

public static void maihttp://n(String[] args) {

SpringApplication.run(MyTestApplication1.class,args);

}

}

4、在控制层当中调用

@RestController

public class TestController1 {

@Autowired

TestService1 testService1;

@RequestMapping("/myTestBuy1")

public String myTestBuy2(){

return testService1.myTestBuy2();

}

}

5、创建一个类实现服务FeignClient接口

@Component

public class MyHystrix1 implements TestService1 {

@Override

public String myTestBuy2() {

return "调用失败,该服务被熔断——时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

}

}

6、在服务FeignClient接口上配置FallBack实现类

@FeignClient(name = "my-test2", url = "${my-test2.url}", fallback = MyHystrix1.class)

pubhttp://lic interface TestService1 {

@RequestMapping("/myTestBuy2")

String myTestBuy2();

}

三、测试

1、场景一服务正常调用

2、场景二当被调服务停止运行时

只给两秒的时间,则自动启动熔断

3、场景三当调取服务超时时

熔断时间根据hystrix设置的时间,我这里设置的是5秒

4、其他

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一文搞懂JMeter engine中HashTree的配置问题
下一篇:浅谈JMeter engine启动原理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~