当前位置: 首页 > news >正文

南宁商城网站建设湖南竞价优化专业公司

南宁商城网站建设,湖南竞价优化专业公司,网页设计html代码大全动物,金山区网站建设在微服务的开发中,我们经常需要服务之间的调用,并且为了提高效率使用异步的方式进行服务之间的调用,在这种异步的调用情况下会有一个严重的问题,丢失上文下 通过以上图片可以看出异步丢失上下文的原因是不在同一个线程&#xff0c…

在微服务的开发中,我们经常需要服务之间的调用,并且为了提高效率使用异步的方式进行服务之间的调用,在这种异步的调用情况下会有一个严重的问题,丢失上文下

通过以上图片可以看出异步丢失上下文的原因是不在同一个线程,所有数据不能共享,Wie了解决这个问题,我们就需要把之前线程的请求头上下文,在次存放到其他线程的请求头上下文就行,具体实现如下:

 

案例:feign异步获取订单明细的案例代码

/*** 获取订单明细的vo* @return*/@Overridepublic OrderConfirmVo orderConfirm() {MemberResponseVo member = OrderInterceptor.threadLocal.get();OrderConfirmVo orderConfirmVo = new OrderConfirmVo();System.out.println("主线程:"+ Thread.currentThread().getId());//获取主线程的请求头信息RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();//考虑到效率问题  使用异步编排CompletableFuture<Void> getAddress = CompletableFuture.runAsync(() -> {//子线程中设置添加主线程的请求头信息  信息共享  否则远程调用异步处理丢失请求头信息RequestContextHolder.setRequestAttributes(requestAttributes);System.out.println("address:"+ Thread.currentThread().getId());//远程获取地址信息List<MemberAddressVo> address = memberFeignService.getAddress(member.getId());orderConfirmVo.setAddress(address);}, executor);CompletableFuture<Void> getItem = CompletableFuture.runAsync(() -> {//子线程中设置添加主线程的请求头信息  信息共享  否则远程调用异步处理丢失请求头信息RequestContextHolder.setRequestAttributes(requestAttributes);System.out.println("item:"+ Thread.currentThread().getId());//远程获取购物项List<OrderItemVo> currentUserCartItems = cartFeignService.getCurrentUserCartItems();orderConfirmVo.setItems(currentUserCartItems);}, executor).thenRunAsync(()->{List<OrderItemVo> items = orderConfirmVo.getItems();//获取所有商品的idList<String> collect = items.stream().map(item -> item.getSkuId()).collect(Collectors.toList());List<Long> skuIds = collect.stream().map(item -> {return Long.parseLong(item);}).collect(Collectors.toList());R<List<SkuHasStockVo>> skusHasStock = wmsFeignService.getSkusHasStock(skuIds);List<SkuHasStockVo> data = skusHasStock.getData(new TypeReference<List<SkuHasStockVo>>() {});if(data!= null){Map<Long, Boolean> collect1 = data.stream().collect(Collectors.toMap(SkuHasStockVo::getSkuId, SkuHasStockVo::getHasStock));orderConfirmVo.setStocks(collect1);}},executor);//异步编排完成之后执行后续操作try {CompletableFuture.allOf(getAddress,getItem).get();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}orderConfirmVo.setIntegration(member.getIntegration());orderConfirmVo.setPayPrice(orderConfirmVo.getPayPrice());orderConfirmVo.setTotal(orderConfirmVo.getTotal());//TODO 放重处理  生成token令牌储存在redisString token = UUID.randomUUID().toString().replace("-", "");orderConfirmVo.setOrderToken(token);redisTemplate.opsForValue().set(OrderConstant.ORDER_TOKEN+member.getId(),token);return orderConfirmVo;}

 

http://www.shuangfujiaoyu.com/news/42187.html

相关文章:

  • 门户网站开发费用在线种子资源库
  • 做公司网站要提供什么友链互换平台推荐
  • 湛江免费建站公司搜索引擎seo优化平台
  • 一个做网站的团队需要哪些网络推广外包业务怎么样
  • 用vs2010做网站导航重庆百度快照优化
  • 网站建设意向表网络推广培训课程内容
  • h5页面制作工具包括太原百度网站快速优化
  • 任务平台网站建设网络推广平台有哪些?
  • 怎么增加网站的关键词库市场营销考试题目及答案2022
  • 喀什市建设局网站查证件中国推广网站
  • 做知识问答的网站自己建网站需要钱吗
  • 新闻稿件seo优化及推广如何运营
  • wordpress 投稿者 权限seo是什么意思中文
  • react用于做PC网站天津百度快照优化公司
  • 网站建站模式搜索引擎优化教材答案
  • 保定有那些网站北京seo服务行者
  • 平面设计套用模板网站百度图片识别在线识图
  • 公司网站制作银川电子商务营销方法
  • 百度做的网站字体侵权兰州网络推广的平台
  • 具有设计感的网站长尾词挖掘工具
  • 西安专业网站建设公司排名网络营销分类
  • 公安局网站建设网络营销公司热线电话
  • 台州网站策划绍兴seo计费管理
  • wordpress会计模板下载厦门seo公司到1火星
  • 电商网站的需求文档seo软件哪个好
  • react 做网站站长工具端口检测
  • 西宁做网站的工作室深圳网络营销和推广渠道
  • 使用cms建设网站安全吗排名优化外包公司
  • 17网站一起做 佛山网站优化策划书
  • 山东城市建设职业学院教务网网站唐山seo推广公司