我有一个问题,我将在哪里得到200个并行请求到Spring Rest Service 1,Service 1将这些请求转发到Service 2,但我需要在请求之间延迟25秒,同时发送到Service 2(Service 2需要30秒的过程)。
尝试以下方法
1.如果我使用@RestController @RequestMapping,并添加了20秒的thread.sleep,这会导致504,因为主线程阻塞无法处理其他请求
1.尝试@asyn与thread.sleep的20秒总是抛出500到最终用户与org.springframework.web.context.request. codec.AsyncRequestTimeoutException
最好的解决办法是什么
提前感谢
1条答案
按热度按时间weylhg0b1#
如果我没理解错的话,你需要一个排队系统。
让我们从创建一个队列开始:
@Service
,这样我们就可以从RestController
自动连接它。我们结束了。
验证码:
队列
字符串
如何使用它:
型
为了同时解决这么多请求,你需要负载平衡。
Dockerfile
docker-compose.yaml
,我们将在其中添加负载均衡器验证码:
Dockerfile
型
docker-compose.yaml
型
运行它:
docker-compose up --scale webapp=<number-of-instance> -d