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

兰州网站建设方案详细成都网站网络建设

兰州网站建设方案详细,成都网站网络建设,宁波建设协会网站首页,宁波seo网站推广软件异步处理编排 我们可以在商品详细信息查询的位置实现CompletableFuture的异步编排处理。 根据业务分析:3.4.5数据接口的入参信息需要来源于1数据接口的返回信息,也就是skuid 所以可以设计 1 3 4 5 串行线程 ,而 3 4 5依赖1 ,需要等…

异步处理编排

  我们可以在商品详细信息查询的位置实现CompletableFuture的异步编排处理。

根据业务分析:3.4.5数据接口的入参信息需要来源于1数据接口的返回信息,也就是skuid 所以可以设计 1 3 4 5 串行线程 ,而 3 4 5依赖1 ,需要等1 执行完成
2接口数据没有关系,所以就与上面的线程是并行关系
所以就是 1 2 接口数据是并行执行 而3 4 5与1 是串行执行 进行异步编排设计,提高接口访问效率
这样处理后,原本5个接口 假如每个接口都需要2s,那么一共就是要10s了,现在就是缩减了,因为1与2接口是并行执行,而3 4 5也是并行的。所以时间上肯定是能较大程度缩减的
image.png

先定义线程池

 // 第一种获取的方式//ExecutorService service = Executors.newFixedThreadPool(10);// Executors.newCachedThreadPool()// Executors.newScheduledThreadPool() 定时任务的线程池// Executors.newSingleThreadExecutor(); // 线程池中永远只有一个线程去处理,并发的情况下会被变为同步的处理// 第二种方式: 直接new ThreadPoolExecutor()对象,并且手动的指定对应的参数// corePoolSize:线程池的核心线程数量 线程池创建出来后就会 new Thread() 5个// maximumPoolSize:最大的线程数量,线程池支持的最大的线程数// keepAliveTime:存活时间,当线程数大于核心线程,空闲的线程的存活时间 8-5=3// unit:存活时间的单位// BlockingQueue<Runnable> workQueue:阻塞队列 当线程数超过了核心线程数据,那么新的请求到来的时候会加入到阻塞的队列中// new LinkedBlockingQueue<>() 默认队列的长度是 Integer.MAX 那这个就太大了,所以我们需要指定队列的长度// threadFactory:创建线程的工厂对象// RejectedExecutionHandler handler:当线程数大于最大线程数的时候会执行的淘汰策略
@Configuration
public class MyThreadPoolConfig {@Beanpublic ThreadPoolExecutor threadPoolExecutor(){return new ThreadPoolExecutor(20,200,10, TimeUnit.SECONDS,new LinkedBlockingQueue(10000), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());}
}

具体的编排处理

//注入线程配置类的线程池  用于服务方法接口的线程创建所需
@AutowiredThreadPoolExecutor threadPoolExecutor;@Overridepublic SpuItemVO item(Long skuId) throws ExecutionException, InterruptedException {SpuItemVO vo = new SpuItemVO();CompletableFuture<SkuInfoEntity> skuInfoFuture = CompletableFuture.supplyAsync(() -> {// 1.sku的基本信息 pms_sku_infoSkuInfoEntity skuInfoEntity = getById(skuId);vo.setInfo(skuInfoEntity);return skuInfoEntity;}, threadPoolExecutor);//thenAcceptAsync 等待前面的异步任务完成后 获取其返回值做相应的业务处理,该任务没返回值,因为主要是获取前面的sku信息做入参 不需要有返回值CompletableFuture<Void> saleFuture = skuInfoFuture.thenAcceptAsync((res) -> {// 3.获取spu中的销售属性的组合List<SkuItemSaleAttrVo> saleAttrs = skuSaleAttrValueService.getSkuSaleAttrValueBySpuId(res.getSpuId());vo.setSaleAttrs(saleAttrs);}, threadPoolExecutor);CompletableFuture<Void> spuFuture = skuInfoFuture.thenAcceptAsync((res) -> {// 4.获取SPU的介绍SpuInfoDescEntity spuInfoDescEntity = spuInfoDescService.getById(res.getSpuId());vo.setDesc(spuInfoDescEntity);}, threadPoolExecutor);CompletableFuture<Void> groupFuture = skuInfoFuture.thenAcceptAsync((res) -> {// 5.获取SPU的规格参数List<SpuItemGroupAttrVo> groupAttrVo = attrGroupService.getAttrgroupWithSpuId(res.getSpuId(), res.getCatalogId());vo.setBaseAttrs(groupAttrVo);}, threadPoolExecutor);//runAsync 异步任务无需返回值CompletableFuture<Void> imageFuture = CompletableFuture.runAsync(() -> {// 2.sku的图片信息pms_sku_imagesList<SkuImagesEntity> images = skuImagesService.getImagesBySkuId(skuId);vo.setImages(images);}, threadPoolExecutor);CompletableFuture<Void> seckillFuture = CompletableFuture.runAsync(() -> {// 查询商品的秒杀活动R r = seckillFeignService.getSeckillSessionBySkuId(skuId);if(r.getCode() == 0){SeckillVO seckillVO = JSON.parseObject(r.get("data").toString(),SeckillVO.class);vo.setSeckillVO(seckillVO);}}, threadPoolExecutor);//最后  allOF等待阻塞上面的异步任务完成后再返回值,由于3 4 5是依赖于 1skuInfoFuture异步任务完成,所以无需将1写入也可以CompletableFuture.allOf(saleFuture,spuFuture,imageFuture,groupFuture,seckillFuture).get();return vo;}
http://www.yayakq.cn/news/591582/

相关文章:

  • 有了自己的网站怎样做后台手机网站怎么dw做
  • 做网站推广托管注意wordpress login 页面
  • 宿迁建站网百度推广效果怎么样
  • 58同城石家庄网站建设成都住建局官网住建局
  • 网站建设公司3lue织梦电影网站模板下载
  • 企业网站建设费用计入哪个科目网站建设1影响力公司
  • 北京模板建站设计网站建设策划方案模板
  • 做试卷的网站做网站备案成功后怎么办
  • 嘉兴做网站的公司青岛百度网站排名优化
  • 合肥做网站建设个人社保网上服务
  • 坪山网站建设特色邢台企业做网站报价
  • 如何在手机上做自己的网站6湖南长沙新增病例最新消息
  • 诚信经营网站的建设百度收录网站需要多久
  • 企业网站优化的三层含义建材网站建设功能方案
  • 电子商务网站开发的课程介绍莱芜话题济南在线
  • 建立站点的基本步骤杭州网站建设是什么
  • 网站推广营销公司动易网站建设工作室
  • 淘客网站做百度推广ac域名网站
  • 天津市网站建设公司wordpress onethink
  • 教育培训东莞网站建设广州建站商城
  • 建设网站查证书北京南站在哪个区哪个街道
  • 在线a视频网站一级a做爰片设计官网登录入口
  • 网站怎么做免费推广wordpress菜单分页
  • 普通网站报价多少网站广告通栏效果
  • 中国高清adidas网站谷歌 wordpress 插件
  • 文化传媒主播公司 东莞网站建设企业解决方案英文
  • 做个兼职网站设计网推怎么做
  • 团队介绍网站模板seo网站案例
  • 培训网站源码计算机应用网站开发
  • 怎么做熊掌号网站羊毛网站建设视频