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

西部数码虚拟主机怎么做网站彩页设计怎么做

西部数码虚拟主机怎么做网站,彩页设计怎么做,哔哩哔哩18款禁用软件,天津网站建设专家在微服务的开发中,我们经常需要服务之间的调用,并且为了提高效率使用异步的方式进行服务之间的调用,在这种异步的调用情况下会有一个严重的问题,丢失上文下 通过以上图片可以看出异步丢失上下文的原因是不在同一个线程&#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.yayakq.cn/news/369394/

相关文章:

  • 洛阳制作网站的公司广东建设工程网站
  • 中国建筑招聘2022新密做网站优化
  • 深圳平台网站建设外链网站分类
  • 泉州建站模板源码深圳seo公司排名
  • 行业论坛网站中国建设人才网信息网站
  • 南川区 网站集约化建设方案个人网站logo
  • 手机运用网站内容管理系统WordPress
  • 推荐昆明做网站建设如何让客户主动找你做网站
  • 网站建设都包括什么科目网站充值系统怎么做
  • 湛江制作网站多少钱手机163邮箱登录
  • 自己录入数据做问卷的网站安心保险官方网站
  • 网站如何加入百度联盟app下载安装免费下载t
  • 哪做网站好佛山网站建设的市场
  • 微信 网站界面 模板热门电影推荐
  • cn域名建设网站需要备案吗网页设计师介绍
  • 以前做弹幕现在的电影网站望野 王绩
  • 深圳营销型定制网站开发1000佛山网站推广 优帮云
  • 知名的网站建设二维码生成器制作
  • 江西省建设厅官方网站wordpress添加赏
  • 网站建设策划方案t中国建设银行官网站诚聘英才
  • 梅州网站建设自己怎么网上注销公司
  • python网站开发教程wordpress功能小工具增加按钮
  • 怎么做手机版网站成都龙泉建设局网站
  • 做网站的公司msgg企业互联网推广方式
  • 坑梓做网站公司怎么样wordpress装机主题
  • 做婚姻网站赚钱北京大企业公司排名
  • nas可以做网站下载服务器吗视觉传达设计主要学什么
  • 漳州网站建设点击博大选wordpress 要求ftp
  • 健康服务管理中心优化门户网站建设
  • 网站颜色搭配网站开发费用计入什么科目