微服务feign调用的实例

148 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

微服务调用实例:

两个服务,一个商品服务(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);

至此,调用完成。