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

勒流网站建设制作青岛市蓝色经济区建设官方网站

勒流网站建设制作,青岛市蓝色经济区建设官方网站,网站设计中超链接怎么做,毕业设计指导网站建设前段时间在群里面发现有个群友抛出一个实际需求#xff1a;需要通过一个接口拉取数据#xff0c;这个接口有每秒10QPS限制#xff0c;请问如何实现数据拉去效率最大化且限制调用拉取接口每秒10PQPS#xff1f;我觉得这个需求挺有意思的#xff0c;跟某群友讨论#xff0c…前段时间在群里面发现有个群友抛出一个实际需求需要通过一个接口拉取数据这个接口有每秒10QPS限制请问如何实现数据拉去效率最大化且限制调用拉取接口每秒10PQPS我觉得这个需求挺有意思的跟某群友讨论发现可以利用JUC包下的Semaphore实现几行代码就能搞定。这里将实现方案做下整理算是抛砖引玉吧~ 利用Semaphore实现多线程调用接口 一、代码实现1.自定义线程池ExecutorConfig2.获取数据接口DataFetchService3.拉取数据接口核心实现RateLimitedDataFetcher4.接口实现类DataFetchServiceImpl5.UserController控制层 二、项目结构及源码下载地址 一、代码实现 1.自定义线程池ExecutorConfig /*** 线程池配置*/ Component public class ExecutorConfig {private static int maxPoolSize Runtime.getRuntime().availableProcessors();private volatile static ExecutorService executorService;public static ExecutorService getThreadPool() {if (executorService null){synchronized (ExecutorConfig.class){if (executorService null){executorService newThreadPool();}}}return executorService;}private static ExecutorService newThreadPool(){int queueSize 1000;int corePool Math.min(10, maxPoolSize);return new ThreadPoolExecutor(corePool, maxPoolSize, 10000L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue(queueSize),new ThreadPoolExecutor.AbortPolicy());}private ExecutorConfig(){} }2.获取数据接口DataFetchService /*** 获取数据*/ public interface DataFetchService {/*** 获取数据* return ListUser*/ListUser dataFetchTask(); }3.拉取数据接口核心实现RateLimitedDataFetcher Service Slf4j public class RateLimitedDataFetcher {Autowiredprivate UserMapper userMapper;private static final int MAX_REQUESTS_PER_SECOND 10;private Semaphore semaphore new Semaphore(MAX_REQUESTS_PER_SECOND);private ExecutorService executorService ExecutorConfig.getThreadPool();public FutureListUser fetchData(Integer id) {return executorService.submit((CallableListUser) () - {try {// 获取许可semaphore.acquire();// 执行网络请求这里简化为一个延迟操作QueryWrapper qw new QueryWrapper();//lt是小于id小于5qw.lt(id, id);return userMapper.selectList(qw);} catch (InterruptedException e) {e.printStackTrace();return null;} finally {// 释放许可semaphore.release();}});} }4.接口实现类DataFetchServiceImpl Service Slf4j public class DataFetchServiceImpl implements DataFetchService {Autowiredprivate UserMapper userMapper;Autowiredprivate RateLimitedDataFetcher rateLimitedDataFetcher;Overridepublic ListUser dataFetchTask() {ListUser userList null;try {userList rateLimitedDataFetcher.fetchData(2).get();} catch (InterruptedException | ExecutionException e) {log.error(DataFetchServiceImpl dataFetchTask error:{},e.getMessage());}return userList;} }5.UserController控制层 /*** 用户控制层** author hua*/ RestController RequestMapping(value /user) public class UserController {Autowiredprivate DataFetchService dataFetchService;GetMapping(value /getBatchUser)public ResponseEntityListUser getBatchUser() {ListUser users dataFetchService.dataFetchTask();HttpStatus status users null ? HttpStatus.NOT_FOUND: HttpStatus.OK;return new ResponseEntity(users, status);} }二、项目结构及源码下载地址 下载地址 springboot-cacheable 欢迎star哦~
http://www.sadfv.cn/news/394210/

相关文章:

  • 网站百度不到验证码怎么办毕设网站建设
  • 福建漳州网站建设哪家便宜网站建设是什么行业
  • 网站建设马鞍山蓝众建站_专业网站建设
  • 网站开发工程师嘉兴网站备案去哪里
  • 所有外包网站网站建设业务饱和了吗
  • 福州 网站建设那些网站可以上传自己做的视频
  • 国内哪些网站是php做的企业网站 phpcms
  • 门户类网站有哪些网站推广新手教程
  • 1万网站建设费入什么科目互联网公司黑话
  • wordpress网站如何制作开发框架有哪些
  • wordpress4.2.2wordpress自带数据库优化
  • 那个公司建设网站下载app平台
  • 九江网站建设优化icp备案查看网站内容吗
  • 手机网站开发语言wordpress附带默认脚本
  • 中国网站优化哪家好用vue的网站
  • 设计公司起名怎么起好seo顾问服务 品达优化
  • 淘宝客网站推广位怎么做wordpress 网站图标设置方法
  • 网站如何自己做支付泉州做网站的公司
  • 商城网站开发需求分析电子商务平台的开发建设
  • 哪个网站可做密丸wordpress saharan
  • 青岛外贸网站建站公司宜昌建网站
  • 网站建设 外文文献南京 网站备案
  • 网站建设与运营课程网站seo排名免费咨询
  • 用户体验不好的网站phpcms 转 wordpress tag
  • 常州哪家做网站便宜深圳网站建设提供服务公司
  • 海洋馆网站建设网站开发电销常遇到问题
  • phpcms v9网站模板英德网站建设
  • 企业型网站建设咨询电话南京学做网站
  • 做网站哪里接单湘潭网站建设 r磐石网络
  • 网站更换主机国企网站建设会议纪要