在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ SpringMVC 實時監(jiān)聽服務(wù)執(zhí)行進度的問題

SpringMVC 實時監(jiān)聽服務(wù)執(zhí)行進度的問題

問題描述:
前端調(diào)用后端的一個服務(wù)A,
該服務(wù)A中包含了子服務(wù)B,C;B,C有自己獨立的事務(wù)機制,互不影響。
執(zhí)行后,最終return前端一個經(jīng)過B+C處理的結(jié)果。
有個需求是,當(dāng)我執(zhí)行完服務(wù)B時,有沒有什么方法可以讓前端接收到類似“B已經(jīng)執(zhí)行結(jié)束,C服務(wù)正在執(zhí)行”的信息,但不影響最終返回結(jié)果。(一次調(diào)用還是只是返回一個B+C處理后的結(jié)果)
或者說在SpringMVC的框架內(nèi),前端有知曉自己調(diào)用的服務(wù)執(zhí)行進度的方法嗎?
請前輩高手不吝賜教,給與解惑~

回答
編輯回答
久愛她

一種在工作中實踐過的可行解決方案:

  1. 后端記錄狀態(tài)(比如可以持久化到數(shù)據(jù)庫,有個字段叫status),status表明執(zhí)行到的階段,比如B事務(wù)完成后,將此字段置為B,C事務(wù)完成后,將此字段置為C
  2. 前端每隔一段時間發(fā)請求輪訓(xùn)后端(根據(jù)時效性要求決定此輪詢間隔,之前做個一個競拍系統(tǒng),前端輪詢間隔為3秒),后端返回數(shù)據(jù)庫中的狀態(tài)字段,即status,前端就能知道目前執(zhí)行到哪個階段了

如果覺得這種方案不太優(yōu)雅,可以考慮websocket

2017年7月2日 09:06
編輯回答
絯孑氣

同意樓上
一種是使用輪訓(xùn),客戶端不斷向服務(wù)端查詢當(dāng)前進度
一直是使用長連接,進度發(fā)生變化時,由服務(wù)端主動通知客戶端

2018年7月2日 08:48