springBoot接口排队(串行执行)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot接口排队(串行执行)相关的知识,希望对你有一定的参考价值。
参考技术A 在调用接口时将线程号(多实例的情况下得用uuid,线程号可能会重复)存入redis队列,查询队首线程号(uuid)如果是当前线程,则执行逻辑、出队,否则等待。后调用的接口后执行了,如果不加该注解的情况如下,执行快的先执行完:
假如不考虑多租户和多实例的情况,就有很多种实现方式
输出如下
实现如下:
输出如下:
实现方式和使用ConcurrentLinkedQueue方式一样,BlockingQueue关键在于 take 方法,当队列为空时,take会阻塞,适合实现生产者消费者模式。
看一下take的源码,当队列为空,调用的是await,当队列不为空时,出队,再判断队列还不为空,唤醒其他take的线程
再看一下offer的源码,当队列不为空,唤醒take的线程
以上是关于springBoot接口排队(串行执行)的主要内容,如果未能解决你的问题,请参考以下文章
springboot 中的commandLineRunners接口