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)
近期下载者:
相关文件:
收藏者: