簡體   English   中英

如何在使用Spring返回響應后調用異步控制器邏輯?

[英]How to invoke async controller logic after returning response using Spring?

我需要及時異步處理請求 - 在收到請求后,我必須返回狀態為200的響應,以確認請求已達到目標,然后繼續在服務中發生一些魔術。 我嘗試了幾種方法來達到它,但每次響應都是在邏輯部分以其他線程結束后發送的。

有沒有辦法使用Spring達到它? 或者我應該考慮其他方法來解決這個問題?

Spring Framework提供了異步執行和任務調度的抽象

你可以看看這個=> http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

你需要使用deferredResult http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/api/org/springframework/web/context/request/async/DeferredResult.html

您將創建一個deferredResult對象,然后您將返回到客戶端。 然后異步您將執行邏輯,一旦完成,您將通知客戶端請求已完成。 這種技術也被稱為“http長輪詢”

    @RequestMapping("/")
   @ResponseBody
   public DeferredResult<String> square() throws JMSException {

       final DeferredResult<String> deferredResult = new DeferredResult<>();
       runInOtherThread(deferredResult);
       return deferredResult;
   }


   private void runInOtherThread(DeferredResult<String> deferredResult) {
       //seconds later in other thread...
       deferredResult.setResult("HTTP response is: 42");
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM