jclient-common

所属分类:博客
开发工具:Java
文件大小:0KB
下载次数:0
上传日期:2023-05-11 10:47:17
上 传 者sh-1993
说明:  维护人员:Вонесенски,ПууЛрекbfес.тобателн,страниаамири:[https:wiki.hh.ru pages viewpage.action page...](https:wiki.hh.ru pages viewpage.action pageId=322903998)
(Maintainers: Вознесенский, пуллреквесты обязательны, страница миграций: https://wiki.hh.ru/pages/viewpage.action?pageId=322903998)

文件列表:
.hh-release.yaml (334, 2023-11-14)
.travis.yml (283, 2023-11-14)
CODEOWNERS (54, 2023-11-14)
balancing/ (0, 2023-11-14)
balancing/pom.xml (995, 2023-11-14)
balancing/src/ (0, 2023-11-14)
balancing/src/main/ (0, 2023-11-14)
balancing/src/main/java/ (0, 2023-11-14)
balancing/src/main/java/ru/ (0, 2023-11-14)
balancing/src/main/java/ru/hh/ (0, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/ (0, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/ (0, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ (0, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/AdaptiveBalancingState.java (1395, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/AdaptiveBalancingStrategy.java (3455, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/BalancingRequestStrategy.java (2058, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/BalancingState.java (1480, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/BalancingStrategy.java (3005, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/BalancingUpstreamManager.java (3332, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ConfigStore.java (199, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ConfigStoreImpl.java (509, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/DowntimeDetector.java (654, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ExternalUrlRequestor.java (2582, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ImmediateResultOrPreparedRequest.java (1378, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/JClientInfrastructureConfig.java (173, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/PropertyKeys.java (2124, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/RequestBalancer.java (6486, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/RequestBalancerBuilder.java (3208, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ResponseTimeTracker.java (617, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/RetryPolicy.java (1573, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/Server.java (8697, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ServerEntry.java (483, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ServerStore.java (364, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/ServerStoreImpl.java (1374, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/Upstream.java (7719, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/UpstreamConfig.java (2225, 2023-11-14)
balancing/src/main/java/ru/hh/jclient/common/balancing/UpstreamConfigFormatException.java (219, 2023-11-14)
... ...

[![Build Status](https://travis-ci.org/hhru/jclient-common.svg?branch=master)](https://travis-ci.org/hhru/jclient-common) [![codecov](https://codecov.io/gh/hhru/jclient-common/branch/master/graph/badge.svg)](https://codecov.io/gh/hhru/jclient-common) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=ru.hh.jclient-common%3Ajclient-common-parent&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=ru.hh.jclient-common%3Ajclient-common-parent) # What is it? Jclient-common allows to make asynchronous HTTP calls to remote services in Java applications. Heavy-lifting is performed using [Async Http Client](https://github.com/AsyncHttpClient/async-http-client), while the library provides user friendly interface that hides unnecessary details. ## Requirements Java 11 is a requirement to build and use this library. Additionally, if you want to use method `JClientBase.jerseyUrl()`, you have to provide one of the following libraries: * `javax.ws.rs:jsr311-api` _(jersey v.1)_ * `javax.ws.rs:javax.ws.rs-api` _(jersey v.2)_ depending on what version of Jersey you use in your application. Client code that uses this library is usually stored together with server code that it calls, in separate maven module. Sample code: ```java HttpClientFactory http = ...; JAXBContext jaxb = JAXBContext.newInstance(Banners.class); Request request = new RequestBuilder("GET").setUrl("http://myservice/banners").addQueryParam("places", "1,2,3").build(); CompletableFuture bannersFuture = http.with(request).expectXml(jaxb, Banners.class).request(); ``` # Creating a client `HttpClientFactoryBuilder` is a builder that provides convenient way to create an instance of `HttpClientFactory`: ```java HttpClientFactory http = new HttpClientFactoryBuilder(new SingletonStorage<>(() -> new HttpClientContext(Map.of(), Map.of(), List.of())), List.of()) .withProperties(jClientProperties) .withRequestStrategy(new DefaultRequestStrategy()) .withCallbackExecutor(Runnable::run) .withHostsWithSession(hostsWithSession) .withUserAgent("my service") .build(); ``` Example of jclient properties: ``` jclient.connectionTimeoutMs=1100 jclient.requestTimeoutMs=2100 jclient.readTimeoutMs=-1 jclient.userAgent=hh-xmlback jclient.hostsWithSession=http://localhost ``` Notice that `readTimeoutMs` is set to `-1`, which means to ignore this setting. This is because in case when `readTimeout < requestTimeout`, `readTimeout` will be executed earlier than `requestTimeout`, so if `requestTimeout` is sufficiently large (e.g. for slow requests) it will not work as expected. ## Load balancing See [balancing readme](./balancing/README.md)

近期下载者

相关文件


收藏者