java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringCloud feign使用

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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文