现在有个业务,A 服务提供接口来对 iot 设备上的信息进行查询。但实际的查询流程是 A 调用 B 服务,B 服务去给 iot 设备发指令,然后 iot 的响应是异步返回通过其它服务写近了数据库。
所以 A 服务要在调用 B 后,又进行等待并查询数据库中是否有这条服务,这个过程由于暂时不知道设备的响应是何时返回的并写入完成的,所以一定要等待甚至进行重试。
我看了下 spring 的 controller 可以用 CompletableFuture 来做异步响应,这样不会阻塞 servlet 那里的 io,但查询数据的等待那里(也就是 future 的 callback )除了 Thread.sleep 我好像想不到很好的等待方法。
用 redis 的 sub 或者类似的通知机制就算了,大幅加大了系统复杂度,暂时不考虑的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.