基於註解@Async的SpringBoot異步調用及使用場景

SpringBoot的異步調用,異步調用類似與定時任務,使用起來簡單方便。

首先要在springboot項目的啟動上添加@EnableAsync開啟異步監控,自動掃描。沒有這個主角兒一切都是扯淡。

基於註解@Async的SpringBoot異步調用及使用場景

第二步就是創建異步任務組件,把@Async加到需要異步執行的方法上即可,註解丟了就變成同步任務了。注意該異步方法必須是 public 的。這個示例類裡面寫了倆個方法,一個sleep1000毫秒,另一個sleep3000毫秒。

基於註解@Async的SpringBoot異步調用及使用場景

異步步方法如果是沒有返回值,那就和常規方法樣寫,有返回值那麼返回值類型就是Future。這個接口Future專門接收異步響應。具體的結果類型為AsyncResult,支持泛型。

第三寫好控制類。通過註解把服務添加進來,統計了個執行時間,由此可以看出來確實是異步調用。

基於註解@Async的SpringBoot異步調用及使用場景

此圖即為異步調用耗時,兩個任務是各幹各的。

基於註解@Async的SpringBoot異步調用及使用場景

此處為同步執行,執行完一個再執行另一個。

基於註解@Async的SpringBoot異步調用及使用場景

異步調用如果出現了異常,使用者很難發現的。最好通過實現AsyncTaskExecutor自定義處理。

異步調用通常用在發短信、發送郵件、消息推送 、運維凌晨自動化操作等,這些場景實時性要求不高,大多都是推廣統計等服務。


分享到:


相關文章: