微服务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);

至此,调用完成。

经验分享 程序员 微信小程序 职场和发展