开局的技术难点

调用方的请求发到后端,后端异步处理后就找不到调用方了。

我之前是怎么处理的?

我是用的长轮询,请求到了后台之后 调用异步服务的时候,给异步服务一个唯一id,异步服务完事后会把执行结果和唯一id放到redis, 这个请求一直自旋(有timeout的)去redis里查询看是否有有回调 如果有的话就响应给调用方
这中方法的缺点即使timeout的时间不好确定 当然用长连接是更好的了,长连接会带来项目的复杂性
image.png

Guarded Suspension

image.png

内部实现就是等待通知机制

但是集群下这种模式就失效了 现在谁还玩单机啊

思考提

不用wait 用sleep

解答

sleep无法被唤醒
如果mq挂了 一直循环,需要timeout