spring 的接口和数据库查询有什么方法可以进行等待但不阻塞线程
資深大佬 : rockyou12 11
现在有个业务,A 服务提供接口来对 iot 设备上的信息进行查询。但实际的查询流程是 A 调用 B 服务,B 服务去给 iot 设备发指令,然后 iot 的响应是异步返回通过其它服务写近了数据库。
所以 A 服务要在调用 B 后,又进行等待并查询数据库中是否有这条服务,这个过程由于暂时不知道设备的响应是何时返回的并写入完成的,所以一定要等待甚至进行重试。
我看了下 spring 的 controller 可以用 CompletableFuture 来做异步响应,这样不会阻塞 servlet 那里的 io,但查询数据的等待那里(也就是 future 的 callback )除了 Thread.sleep 我好像想不到很好的等待方法。
用 redis 的 sub 或者类似的通知机制就算了,大幅加大了系统复杂度,暂时不考虑的
大佬有話說 (7)