异步执行
@FeignClient(gulimall-ware)
public interface WmFeignService {
@PostMapping(ware/waresku/hasstock)
public R getSkusHassStock(@RequestBody List<Long> skuIds);
}
gulimall-ware 中注册了发现 EnableDiscoveryClient
@EnableFeignClients
@EnableDiscoveryClient
注入
@Autowired
WmFeignService wmFeignService;
CompletableFuture<Void> getCartFuture =
CompletableFuture.runAsync(
() -> {
System.out.println(副线程... + Thread.currentThread().getId());
RequestContextHolder.setRequestAttributes(requestAttributes);
List<OrderItemVo> items = cartFeginService.getCurrentUserCartItems();
confirmVo.setItems(items);
},
executor).thenRunAsync(()->{
List<OrderItemVo> items = confirmVo.getItems();
List<Long> collect = items.stream().map(item -> item.getSkuId()).collect(Collectors.toList());
R hasStock = wmFeignService.getSkusHasStock(collect);
List<SkuStockVo> data = hasStock.getData(new TypeReference<List<SkuStockVo>>() {
});
if(data!=null){
Map<Long, Boolean> collect1 = data.stream().collect(Collectors.toMap(SkuStockVo::getSkuId, SkuStockVo::getHsaStock));
confirmVo.setStocks(collect1);
}
});