Как создать асинхронный кэширующий http-клиент?

Используя библиотеку org.apache.httpcomponents:httpasyncclient-cache:4.1.3, я пытаюсь понять, как создать http-клиент asynchronous caching?

Я могу создать каждый по отдельности, используя соответствующие конструкторы, но не могу найти способ использовать оба.

e.g.

CloseableHttpClient client = CachingHttpClientBuilder.create()
    .setCacheConfig(cacheConfig())
    .build();

CloseableHttpAsyncClient build = HttpAsyncClientBuilder.create()
    .build();

Por que no los dos?

Примечание Я не привязан к этой версии библиотеки — рад решениям, использующим последнюю версию.

Связано:


person Nick Grealy    schedule 26.04.2017    source источник


Ответы (1)


Вы можете создать новый CachingHttpAsyncClient сразу после создания HttpAsyncClient. Например:

CloseableHttpAsyncClient asyncClient= HttpAsyncClientBuilder.create().build();

CachingHttpAsyncClient client = new CachingHttpAsyncClient(asyncClient, cacheConfig());

Вы можете узнать больше о конструкторах из здесь.

person Ke Li    schedule 26.04.2017
comment
Спасибо @KeLi! Любая идея, как я могу получить это в AsyncRestTemplate ? - person Nick Grealy; 01.05.2017
comment
@NickGrealy кажется, что лучшим способом является настраиваемая реализация ClientHttpRequestFactory, основанная на HttpComponentsAsyncClientHttpRequestFactory (которая требует CloseableHttpAsyncClient и поэтому не работает как есть) - person sfussenegger; 13.06.2017
comment
@sfussenegger - хотите опубликовать ответ? :) - person Nick Grealy; 14.06.2017
comment
@NickGrealy Я создал для него новый вопрос: stackoverflow.com/questions/44539146 - person sfussenegger; 14.06.2017