-
feign是在ribbon上封装的
-
ribbon请求需要自己拼接 而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法。
-
feign封装了负载均衡功能
-
可以统一管理 方便复用
-
极简整合hystrix
1.修改application类
@SpringBootApplication(scanBasePackages = “com.vanpeng.cms”)
@ComponentScan(“com.vanpeng.cms.*”)
@EnableCaching
@EnableEurekaClient
@EnableSwagger2
@EnableFeignClients #开启feign
@EnableCircuitBreaker #开启hystrix
//@EnableApolloConfig
public class CmsApplication {
public static void main(String[] args) {
SpringApplication.run(CmsApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
2.修改application.yml
feign:
hystrix:
enabled: true #hystrix默认关闭需要 开启
ribbon:
ConnectTimeout: 5000 # 请求连接的超时时间 默认的时间为 1 秒
ReadTimeout: 5000 # 请求处理的超时时间
hystrix:
command:
default: #default全局有效,service id指定应用有效
execution:
timeout:
#如果enabled设置为false,则请求超时交给ribbon控制,为true,则超时作为熔断根据
enabled: true
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 5000 #断路器超时时间,默认1000ms
circuitBreaker:
enabled: true
requestVolumeThreshold: 10 #默认20 ,熔断的阈值,如何user服务报错满足3次,熔断器就会打开,就算order之后请求正确的数据也不行。
sleepWindowInMilliseconds: 8000 #默认5S , 等5S之后熔断器会处于半开状态,然后下一次请求的正确和错误讲决定熔断器是否真的关闭和是否继续打开
errorThresholdPercentage: 0.5
3.服务间调用
@FeignClient(name = “data-service”, fallback = DataFallBack.class) //表明是feign接口 name为被调用服务在erueka上的服务名
public interface DataServiceFeign {
@PostMapping(“/selectDataSetId”) //对应着被调用服务的路径 post表明为post请求 请求参数为@RequestBody ResultCatalog resultCatalog
Result selectByDataSetId(@RequestBody ResultCatalog resultCatalog);
@GetMapping(“/resourceMenu/selectFeignService/{lecturerUserNo}”) //表明为get请求 参数为 @PathVariable(value = “lecturerUserNo”) Long lecturerUserNo
Result<List>
selectService(@PathVariable(value = “lecturerUserNo”) Long lecturerUserNo);
}
4.熔断hystrix
@Component
public class DataFallBack implements DataServiceFeign { //需要实现feign接口 每个方法对应着每个feign调用的服务
@Override
public Result selectByDataSetId(ResultCatalog resultCatalog) {
Result result = new Result();
String error = “调用系统失败。”;
result.setCode(506);
result.setMessage(error);
return result;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ndroid开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!