0

Reactor-core и Spring 5 только что представили новый async WebClient для своих издателей Mono/Flux.Есть ли какой-либо асинхронный обновленный http-клиент для RxJava?

Поскольку это обычное дело, чтобы обернуть запрос RestTemplate с помощью Observable и subscribeOn, чтобы обеспечить асинхронность, мне было интересно, существует ли какой-либо асинхронный клиент для RxJava.

Я нашел https://github.com/ReactiveX/RxApacheHttp, но он кажется неподдерживаемым, его последняя фиксация - с 2014 года и даже не работает в моих тестах.

ответ

0

Да, есть, но не ясно, является ли соответствует вашим потребностям:

Retrofit2

Для того, чтобы позволить, чтобы получить ответы, как Observable добавить следующую строку в ваш build.gradle файл:

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 

Среди многих вариантов у вас есть:

Retrofit retrofit = new Retrofit.Builder() 
    (...) 
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
    (...) 
    .build(); 

После того, что внутри класса, который является интерфейс Retrofit каждая функция может иметь Observable<{class_to_return}> в качестве возвращаемого объекта:

retrofit.create({interface_class}.class) 

класс интерфейса (пример):

Observable<ApiUser> postLogin({parameters}); 
+0

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

+0

Создайте средний класс, который добавит соответствующие операторы: [subscribeOn] (http://reactivex.io/documentation/operators/subscribeon.html) и [observOn] (http://reactivex.io/documentation/operators/observeon .html) –

+0

Я уже делаю это, используя Spring RestTemplate. Я спрашиваю, есть ли какой-либо асинхронный веб-клиент для RxJava. – codependent

Смежные вопросы