2017-05-26 466 views
0

我想在Spring Boot中遇到以下用例。Spring Boot http請求長輪詢

  1. 我有第三方REST API,如果有什麼要返回或需要10秒發送空白響應,它會返回一個響應asap。
  2. 我需要不斷調用這個API意味着如果API返回響應發送該響應來處理並再次調用該API意味着我需要長時間輪詢該API,但是一旦我得到響應就不需要時間間隔再次輪詢。
  3. 我想要獨立的線程處理響應。
  4. 這不是一個Web應用程序。我只想用純java(spring)而不是java腳本或JQuery來實現它。

我如何在Spring Boot中實現這一點。我讀了關於彗星和氣氛,而谷歌搜索,但沒有具體的信息 或有關第三方HTTP請求輪詢的示例代碼,或者可能是我缺少的東西。

可能是我正在尋找像卡夫卡消費者客戶端的解決方案。

更新

我已經與Java定時器如下嘗試這樣做,你可以建議,如果有任何其他更好的辦法。

public void pollMsg(){ 
    Timer timer = new Timer(); 
    TimerTask myTask = new TimerTask() { 
     @Override 
     public void run() { 
      CompletableFuture.supplyAsync(this::sendMsg).thenAccept(this::notify); 
     } 

     private <String> java.lang.String sendMsg() { 
      RestTemplate restTemplate = new RestTemplate(); 
      java.lang.String msg = restTemplate.getForObject("http://example.com", java.lang.String.class); 
      return msg; 
     } 

     private <String> void notify(java.lang.String msg) { 
      System.out.println("Process this message for further: " + msg); 
      run(); 
     } 
    }; 
    timer.schedule(myTask, 1000, 2000); 

} 

回答

0

那麼,爲什麼你不能運行一個後臺線程,將完成你想要的循環?

  1. 發送API請求
  2. 獲得迴應 - 從你的描述10秒後,它可以是東西或空響應該響應
  3. 轉到1
+0

我已經更新的問題

  • 過程如果有解決方案,可以請讓我知道是否有更好的解決方案。 – ppb

  • +0

    對我來說很好 – Antoniossss