SpringCloud分布式项目下feign的使用示例详解
作者:零维展开智子
这篇文章主要介绍了SpringCloud分布式项目下feign的使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
新建一个feign的微服务(后面统称为A),其他项目要使用利用maven导入该服务模块的依赖就行了
导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
定义接口
@FeignClient(value = "leadnews-article") public interface IArticleClient { @PostMapping("/api/v1/article/save") public ResponseResult saveArticle(@RequestBody ArticleDto dto) ; }
另外一个微服务(value的值对应)的接口实现(后面统称为B),哪个微服务去实现这个接口,value就是什么
@RestController public class ArticleClient implements IArticleClient { @Autowired private ApArticleService apArticleService; @Override @PostMapping("/api/v1/article/save") public ResponseResult saveArticle(@RequestBody ArticleDto dto) { return apArticleService.saveArticle(dto); } }
接着在B项目中写mapper、service层的实现即可
C项目要访问B项目的接口这个时候直接访问A项目的接口就行了
A项目只是一个桥梁,C项目中利用
使用时自动注入即可,但是记得要导入A项目的依赖
@Autowired private IArticleClient articleClient;
主启动类还需要添加注解
服务降级处理
- 服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃
- 服务降级虽然会导致请求失败,但是不会导致阻塞。
feign-api编写降级逻辑
/** * feign失败配置 * @author itheima */ @Component public class IArticleClientFallback implements IArticleClient { @Override public ResponseResult saveArticle(ArticleDto dto) { return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR,"获取数据失败"); } }
在C微服务中添加类,扫描降级代码类的包
这里包路径是你的
@Configuration @ComponentScan("com.heima.apis.article.fallback") public class InitConfig { }
在之前A服务的接口上添加这个
C服务开启降级
nacos配置中心里添加如下内容,开启服务降级,也可以指定服务响应的超时的时间
feign: # 开启feign对hystrix熔断降级的支持 hystrix: enabled: true # 修改调用超时时间 client: config: default: connectTimeout: 2000 readTimeout: 2000
到此这篇关于SpringCloud分布式项目下feign的使用的文章就介绍到这了,更多相关SpringCloud feign使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!