微服务feign调用的实例
微服务调用实例: 两个服务,一个商品服务(Product) 一个库存服务(Ware) 场景:商品服务查询库存服务使用有库存。
1.库存服务(ware)做好支持查询业务
/** * 查询是否有库存 * @param skuIds * @return */ @PostMapping("/hasstock") public R getSkusHasStock(@RequestBody List<Long> skuIds){ //sku_id stock List<SkuHasStockVo> vos = wareSkuService.getSkusHasStock(skuIds); return R.ok().put("data",vos); }
2.商品服务pom导入openfeign
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
3.建立专属feign远程业务的包(文件夹)
位置:个人习惯 这里与controller目录平级 config controller dao entity exception roductApplication service vo 增加一个 --> feign 包
4.写远程调用接口
1.建立类文件 WareFeignService
2.接口注解FeignClient客户端 调用远程服务的服务名
@FeignClient("ware") public interface WareFeignService { }
3.在feign类方法编写远程接口方法。 直接去被调用方法复制签名
@PostMapping("/hasstock") R getSkusHasStock(@RequestBody List<Long> skuIds)
4.把这个方法,补齐被调用方法的访问路径
@PostMapping("/ware服务路径/远程getSkusHasStock所在控制器路径/hasstock") R getSkusHasStock(@RequestBody List<Long> skuIds)
5.在product的需要远程调用库存的地方 引入这个远程调用接口 当作service试用
@Autowired WareFeignService wareFeignService; ... 如: skusHasStock = wareFeignService.getSkusHasStock(skuIdList);
至此,调用完成。
下一篇:
微服务之间接口调用的简单实现之Feign