PassJava 开源 (七) :Spring Cloud 整合 OpenFeign 实现声明式远程调用
PassJava (佳必过) 项目全套学习教程连载中,关注公众号第一时间获取。
文档在线地址:www.passjava.cn
Spring Cloud 整合 OpenFeign 实现声明式远程调用
1.Feign 概述
Feign 声明式客的 HTTP 客户端,让远程调用更简单。
提供了 HTTP 请求的模板,编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、格式、地址等信息
整合了 Ribbon(负载均衡组件)和 Hystix(服务熔断组件),不需要显示使用这两个组件
Spring Cloud Feign 在 Netflix Feign 的基础上扩展了对 SpringMVC 注解的支持
2. 远程调用示例
示例:查询用户的学习时长
用户微服务 passjava-member 调用学习微服务 passjava-study 的方法
1.引入 openfeign 依赖
passjava-member 和 passjava-study 项目的 pom 文件引入 openfeign 依赖
2.StudyTimeController 定义远程调用测试方法
返回某个用户学习题目的总时长
3.member 目录下创建 feign service
创建 package: com.jackson0714.passjava.member.feign
创建 StudyTimeFeignService 接口
添加注解
@FeignClient
。显示声明这个接口用来远程调用study
服务。
添加远程调用方法
给方法添加要远程调用的方法的路径
study/studytime/member/list/test
添加注解
@EnableFeignClients
开启远程调用服务。给类 PassjavaStudyApplication.java 添加注解
@EnableFeignClients
。basePackages 代表自动扫码指定路径下所有带有 @FeignClient 注解的接口。
测试接口
启动 passjava-member 和 passjava-study 服务
用 postman 工具或浏览器输入请求地址
http://localhost:10000/member/member/studytime/list/test
返回结果如下图
studytime 和 member 都有数据,学习时长:100 分钟,昵称:悟空聊架构
4.测试 OpenFeign 传参
示例:用户 id 作为参数在服务间传递
MemberController
StudyTimeFeignService
StudyTimeController
请求地址和参数:http://localhost:10000/member/member/studytime/list/test/1
执行结果:
3.总结 FeignClient 使用方法
引入 OpenFeign 依赖
定义 FeignClient 接口类(注解
@FeignClient
),声明这个接口类是用来远程调用其他服务的接口类中定义要远程调用的接口方法,指定远程服务方法的路径
Controller 类中调用接口方法
开启远程调用(注解
@EnableFeignClients
)远程调用的流程:
@RequestBody 将这个对象转为 json
找到 passjava-study 服务,给 study/studytime/member/list/test 服务发送请求
将 json 放到请求体里面,发送请求
对方服务收到请求,请求体里有 json 数据
将请求体中的 json 数据转换成对方服务的参数类型。只需要两边的字段名称和类型是一致的。
代码地址
https://github.com/Jackson0714/PassJava-Platform
作者简介:悟空,8 年一线互联网开发和架构经验,用故事讲解分布式、架构设计、Java 核心技术。《JVM 性能优化实战》专栏作者,开源了《Spring Cloud 实战 PassJava》项目,公众号:
悟空聊架构
。个人网站:www.passjava.cn
版权声明: 本文为 InfoQ 作者【悟空聊架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/a1cb87c2ceef5cf3f44e5eab1】。文章转载请联系作者。
评论