SpringMVC 实时监听服务执行进度的问题

问题描述:
前端调用后端的一个服务A,
该服务A中包含了子服务B,C;B,C有自己独立的事务机制,互不影响。
执行后,最终return前端一个经过B+C处理的结果。
有个需求是,当我执行完服务B时,有没有什么方法可以让前端接收到类似“B已经执行结束,C服务正在执行”的信息,但不影响最终返回结果。(一次调用还是只是返回一个B+C处理后的结果)
或者说在SpringMVC的框架内,前端有知晓自己调用的服务执行进度的方法吗?
请前辈高手不吝赐教,给与解惑~

阅读 4k
2 个回答

一种在工作中实践过的可行解决方案:

  1. 后端记录状态(比如可以持久化到数据库,有个字段叫status),status表明执行到的阶段,比如B事务完成后,将此字段置为B,C事务完成后,将此字段置为C
  2. 前端每隔一段时间发请求轮训后端(根据时效性要求决定此轮询间隔,之前做个一个竞拍系统,前端轮询间隔为3秒),后端返回数据库中的状态字段,即status,前端就能知道目前执行到哪个阶段了

如果觉得这种方案不太优雅,可以考虑websocket

同意楼上
一种是使用轮训,客户端不断向服务端查询当前进度
一直是使用长连接,进度发生变化时,由服务端主动通知客户端

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题