Polishing JettyClientHttpRequestFactory

This commit is contained in:
Arjen Poutsma 2023-06-28 16:19:13 +02:00
parent 2eb8efe83b
commit d1d79babe7
2 changed files with 19 additions and 14 deletions

View File

@ -19,7 +19,6 @@ package org.springframework.http.client;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.time.Duration;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@ -46,12 +45,12 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
private final Request request;
private final Duration timeOut;
private final int readTimeout;
public JettyClientHttpRequest(Request request, Duration timeOut) {
public JettyClientHttpRequest(Request request, int readTimeout) {
this.request = request;
this.timeOut = timeOut;
this.readTimeout = readTimeout;
}
@Override
@ -92,7 +91,7 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
else {
this.request.send(responseListener);
}
Response response = responseListener.get(TimeUnit.MILLISECONDS.convert(this.timeOut), TimeUnit.MILLISECONDS);
Response response = responseListener.get(this.readTimeout, TimeUnit.MILLISECONDS);
return new JettyClientHttpResponse(response, responseListener.getInputStream());
}
catch (InterruptedException ex) {

View File

@ -18,7 +18,6 @@ package org.springframework.http.client;
import java.io.IOException;
import java.net.URI;
import java.time.Duration;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.Request;
@ -41,7 +40,7 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory,
private final boolean defaultClient;
private Duration timeOut = Duration.ofSeconds(1);
private int readTimeout = 1000;
/**
@ -66,13 +65,20 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory,
/**
* Sets the maximum time to wait until all headers have been received.
* The default value is 1 second.
* Set the underlying connect timeout in milliseconds.
* A value of 0 specifies an infinite timeout.
*/
public void setTimeOut(Duration timeOut) {
Assert.notNull(timeOut, "TimeOut must not be null");
Assert.isTrue(!timeOut.isNegative(), "TimeOut must not be negative");
this.timeOut = timeOut;
public void setConnectTimeout(int connectTimeout) {
Assert.isTrue(connectTimeout >= 0, "Timeout must be a non-negative value");
this.httpClient.setConnectTimeout(connectTimeout);
}
/**
* Set the underlying read timeout in milliseconds.
*/
public void setReadTimeout(int readTimeout) {
Assert.isTrue(readTimeout > 0, "Timeout must be a positive value");
this.readTimeout = readTimeout;
}
@Override
@ -105,6 +111,6 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory,
}
Request request = this.httpClient.newRequest(uri).method(httpMethod.name());
return new JettyClientHttpRequest(request, this.timeOut);
return new JettyClientHttpRequest(request, this.readTimeout);
}
}