在本系列的 上一篇文章 中,演示如何使用 Hystrix 的熔断功能。在本文中,将演示如何使用 OpenFeign 简化 Rest 客户端的开发。
OpenFeign是spring cloud中服务消费端的调用库,通常与ribbon,hystrix等组合使用,简化了访问服务的代码和配置。
新建一个微服务项目
在 IDEA 中新建一个普通的 maven 项目,将其 groupId 命名为: cn.com.hohistar.tutorial, artifactId 命名为: springcloud-openfeign-client, 然后将项目的 pom.xml 替换为如下内容:
1 |
|
新建数据类
在 src/main/java 中新建一个名为: cn.com.hohistar.cloud.model 的包(package), 并在其中增加一个名为: Todo 的类, 代码如下:
1 |
|
因为所有的服务返回都别规范为 ApiResult 的格式,所以还需要加入 ApiResult 类的定义在 model 包中。 代码如下:
1 |
|
建立Feign实例
在 src/main/java 中新建一个名为: cn.com.hohistar.cloud.service 包(package),然后在包中新建一个接口,名为: TodoClient。其代码如下:
1 | "cloud-todo-service") (value = |
建立一个Rest API
在 src/main/java 中新建一个名为: cn.com.hohistar.cloud.api 包(package),然后在包中新建一个类,名为: FeignClientApi:
1 |
|
建立应用启动类
在包 cn.com.hohistar.cloud 新建一个名为: FeignClientApplication 的类作为启动类, 代码如下:
1 |
|
为应用加入配置信息
在 src/main/resource 中新建名为 application.yml 的配置文件,并加入以下内容:
1 | server: |
运行程序检验结果
启动应用后,用浏览器访问:
1 | http://localhost:9091/f/todo |
可以看到类似的结果:
1 | {"succ":true,"code":null,"msg":null,"data":[{"id":1,"title":"Call Metting","desc":""},{"id":2,"title":"Print File","desc":""},{"id":3,"title":"Call Metting","desc":""},{"id":4,"title":"Print File","desc":""}]} |
加入熔断功能
在 pom.xml 文件中加入对 hystrix 的依赖库。
1 | <dependency> |
在 application.xml 中加入如下培训信息,允许熔断
1 | feign: |
为了使用自定义的 fallback 方法,需要修改 TodoClient 接口,如下:
1 |
|