Class HttpClient
java.lang.Object
org.nanonative.nano.core.model.Service
org.nanonative.nano.services.http.HttpClient
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HttpClientstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final intprotected longprotected intFields inherited from class org.nanonative.nano.core.model.Service
context, createdAtMs, isReady -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected HttpObjectcircuitBreaker(int attempt, HttpRequest request, HttpObject response, Consumer<HttpObject> callback, Throwable throwable) Implements a circuit breaker pattern to handle retries for HTTP requests in case of failures.client()voidconfigure(berlin.yuna.typemap.model.TypeMapI<?> changes, berlin.yuna.typemap.model.TypeMapI<?> merged) longReturns the connection timeout in milliseconds configured for thisHttpClient.booleanReturns whether thisHttpClientfollows redirects.voidlongReturns the read timeout in milliseconds configured for thisHttpClient.protected HttpObjectresponseOf(HttpResponse<byte[]> httpResponse, HttpObject response) intretries()Returns the number of retries configured for thisHttpClient.protected HttpObjectsend(int attempt, HttpRequest request, HttpObject response, Consumer<HttpObject> callback) send(HttpRequest request) Sends an HTTP request using the providedHttpObjectorHttpRequest.send(HttpRequest request, Consumer<HttpObject> callback) Sends an HTTP request using the providedHttpObjectorHttpRequest.voidstart()voidstop()toString()version()Returns theHttpClient.Versionused by thisHttpClient.Methods inherited from class org.nanonative.nano.core.model.Service
configure, context, context, createdAtMs, isReady, isReadyState, name, nanoThread, receiveEvent, threadsOf
-
Field Details
-
CONFIG_HTTP_CLIENT_VERSION
-
CONFIG_HTTP_CLIENT_MAX_RETRIES
-
CONFIG_HTTP_CLIENT_CON_TIMEOUT_MS
-
CONFIG_HTTP_CLIENT_READ_TIMEOUT_MS
-
CONFIG_HTTP_CLIENT_FOLLOW_REDIRECTS
-
EVENT_SEND_HTTP
public static final int EVENT_SEND_HTTP -
client
-
retries
protected int retries -
readTimeoutMs
protected long readTimeoutMs
-
-
Constructor Details
-
HttpClient
public HttpClient()
-
-
Method Details
-
start
public void start() -
stop
public void stop() -
onFailure
-
onEvent
-
configure
public void configure(berlin.yuna.typemap.model.TypeMapI<?> changes, berlin.yuna.typemap.model.TypeMapI<?> merged) -
toString
-
send
Sends an HTTP request using the providedHttpObjectorHttpRequest. For async processing, use thesend(HttpRequest, Consumer)method.- Parameters:
request- theHttpObjectorHttpRequestrepresenting the HTTP request to send- Returns:
- the response as an
HttpObject
-
send
Sends an HTTP request using the providedHttpObjectorHttpRequest. If a response listener is provided, it processes the response asynchronously.- Parameters:
request- theHttpObjectorHttpRequestrepresenting the HTTP request to sendcallback- an optional consumer to process the response asynchronously- Returns:
- the response as an
HttpObject
-
retries
public int retries()Returns the number of retries configured for thisHttpClient.- Returns:
- the number of retries
-
followRedirects
public boolean followRedirects()Returns whether thisHttpClientfollows redirects.- Returns:
trueif redirects are followed,falseotherwise
-
readTimeoutMs
public long readTimeoutMs()Returns the read timeout in milliseconds configured for thisHttpClient.- Returns:
- the read timeout in milliseconds
-
connectionTimeoutMs
public long connectionTimeoutMs()Returns the connection timeout in milliseconds configured for thisHttpClient.- Returns:
- the connection timeout in milliseconds
-
version
Returns theHttpClient.Versionused by thisHttpClient.- Returns:
- the
HttpClient.Version
-
client
-
send
protected HttpObject send(int attempt, HttpRequest request, HttpObject response, Consumer<HttpObject> callback) -
responseOf
-
circuitBreaker
protected HttpObject circuitBreaker(int attempt, HttpRequest request, HttpObject response, Consumer<HttpObject> callback, Throwable throwable) Implements a circuit breaker pattern to handle retries for HTTP requests in case of failures. This method attempts to resend the request after a delay that increases exponentially with the number of attempts. If the maximum number of retries is reached, it logs the failure and stops retrying.- Parameters:
attempt- The current retry attempt number.request- TheHttpObjectrepresenting the original HTTP request.response- TheHttpObjectto populate with the response upon successful request completion.throwable- TheThrowablethat triggered the need for a retry.- Returns:
- A modified
HttpObjectcontaining the result of the retry attempts. If all retries are exhausted without success, it returns theHttpObjectpopulated with the failure information.
-