2017-03-02 20 views
1

我正在使用RestAssured來調用API調用,並且希望在REST調用失敗時實現重試邏輯。如何在RestAssured中爲失敗的REST調用實現重試邏輯

這個要求是因爲我們正在爲某些通常在重試時工作的API獲取間歇性的500個響應代碼。

我已經實現了下面的代碼,但它似乎沒有工作 -

HttpClientConfig.HttpClientFactory htc = new HttpClientConfig.HttpClientFactory() { 

    @Override 
    public HttpClient createHttpClient() { 
     DefaultHttpClient d = new DefaultHttpClient(); 

     d.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(restRetryCount, true)); 
     return d; 
    } 
}; 

RestAssuredConfig rac = RestAssured.config().httpClient(HttpClientConfig.httpClientConfig().httpClientFactory(htc)); 

而且,由於RestAssured不迎合HttpClient的水平記錄,我試圖讓使用Java的Apache的HttpClient的記錄。 util.logging但也似乎並沒有工作,或者

創建了一個帶有custom.logging.properties文件 -

# Enables the header wire and context logging 
org.apache.http.level = FINEST 
org.apache.http.wire.level = SEVERE 

# Enables the context logging for connection management & request execution 
org.apache.http.impl.conn.level = FINEST 
org.apache.http.impl.client.level = FINEST 
org.apache.http.client.level = FINEST 

,並寫了啓動日誌如下 -

public static Logger initiateHttpTrafficLogging(){ 
    Logger log = Logger.getLogger("httptraffic.log"); 
    ClassLoader loader = Thread.currentThread().getContextClassLoader(); 
    InputStream is = loader.getResourceAsStream("custom.logging.properties"); 
    try{ 
     LogManager.getLogManager().readConfiguration(is); 
     log.setLevel(Level.FINEST); 
     log.addHandler(new ConsoleHandler()); 
     log.setUseParentHandlers(false); 
     log.info("Initiating HTTP Traffic logging ::\n\n"); 
    } catch (IOException ie){ 
     Assert.fail("ERROR: Could not load the loggin properties !!!", ie.fillInStackTrace()); 
    } 
    return log; 
} 

任何人都可以請提供我一些方向,以我要去的地方錯誤的或任何指針來解決這個問題。

欣賞您的回覆。 謝謝。

+0

是否使用基於彈簧的配置? – user121290

回答

0

有一個春天重試罐子u能整合與您application.And你可以使用這樣的事情在你的方法

@Retryable(maxAttempts = 4, backoff = @Backoff(delay = 200), 
      include = {RetryableException.class}) 
    ResponseEntity<String> request(
      String url, HttpMethod method, HttpEntity<?> entity, Class<?> type, 
      Map<String, String> parameters 
    ) throws Exception{} 

和u需要做@EnableAspectJAutoProxy和@EnableRetry在 配置分類