Class HttpBackOffUnsuccessfulResponseHandler (1.43.0)

public class HttpBackOffUnsuccessfulResponseHandler implements HttpUnsuccessfulResponseHandler

Beta
Back-off handler which handles an abnormal HTTP response with BackOff.

It is designed to work with only one HttpRequest at a time. As a result you MUST create a new instance of HttpBackOffUnsuccessfulResponseHandler with a new instance of BackOff for each instance of HttpRequest.

Sample usage:

request.setUnsuccessfulResponseHandler( new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff()));

Note: Implementation doesn't call BackOff#reset at all, since it expects a new BackOff instance.

Implementation is not thread-safe

Inheritance

java.lang.Object > HttpBackOffUnsuccessfulResponseHandler

Constructors

HttpBackOffUnsuccessfulResponseHandler(BackOff backOff)

public HttpBackOffUnsuccessfulResponseHandler(BackOff backOff)

Constructs a new instance from a BackOff.

Parameter
NameDescription
backOffBackOff

back-off policy

Methods

getBackOff()

public final BackOff getBackOff()

Returns the back-off.

Returns
TypeDescription
BackOff

getBackOffRequired()

public final HttpBackOffUnsuccessfulResponseHandler.BackOffRequired getBackOffRequired()

Returns the BackOffRequired instance which determines if back-off is required based on an abnormal HTTP response.

Returns
TypeDescription
HttpBackOffUnsuccessfulResponseHandler.BackOffRequired

getSleeper()

public final Sleeper getSleeper()

Returns the sleeper.

Returns
TypeDescription
Sleeper

handleResponse(HttpRequest request, HttpResponse response, boolean supportsRetry)

public boolean handleResponse(HttpRequest request, HttpResponse response, boolean supportsRetry)

Handler that will be invoked when an abnormal response is received. There are a few simple rules that one must follow:

  • If you modify the request object or modify its execute interceptors in a way that should resolve the error, you must return true to issue a retry.
  • Do not read from the content stream, this will prevent the eventual end user from having access to it.

Handles the request with BackOff. That means that if back-off is required a call to Sleeper#sleep(long) will be made.

Parameters
NameDescription
requestHttpRequest
responseHttpResponse
supportsRetryboolean
Returns
TypeDescription
boolean
Exceptions
TypeDescription
IOException

setBackOffRequired(HttpBackOffUnsuccessfulResponseHandler.BackOffRequired backOffRequired)

public HttpBackOffUnsuccessfulResponseHandler setBackOffRequired(HttpBackOffUnsuccessfulResponseHandler.BackOffRequired backOffRequired)

Sets the BackOffRequired instance which determines if back-off is required based on an abnormal HTTP response.

The default value is BackOffRequired#ON_SERVER_ERROR.

Overriding is only supported for the purpose of calling the super implementation and changing the return type, but nothing else.

Parameter
NameDescription
backOffRequiredHttpBackOffUnsuccessfulResponseHandler.BackOffRequired
Returns
TypeDescription
HttpBackOffUnsuccessfulResponseHandler

setSleeper(Sleeper sleeper)

public HttpBackOffUnsuccessfulResponseHandler setSleeper(Sleeper sleeper)

Sets the sleeper.

The default value is Sleeper#DEFAULT.

Overriding is only supported for the purpose of calling the super implementation and changing the return type, but nothing else.

Parameter
NameDescription
sleeperSleeper
Returns
TypeDescription
HttpBackOffUnsuccessfulResponseHandler