Я пытаюсь вызвать REST API параллельно, используя Observables.Я столкнулся с некоторой проблемой по этому вопросу.Я описал проблему здесь.Может ли кто-нибудь помочь мне в этом?
Мой пример использования: у меня есть 5 customerid, мне нужно вызвать другой API REST, передавая этот идентификатор пользователя одновременно, чтобы получить ответ.
, поэтому ярешил использовать Observables здесь для лучшей производительности для одновременного доступа к сервису.
Я попытался с опцией 3 ниже.но я чувствую, что все они обеспечивают одинаковое время отклика.Я не вижу никакой разницы во времени ответа на все эти вызовы
Может ли кто-нибудь найти ошибки в этом коде, если он ошибся.правильно ли я использовал Observables?
1) Observable.from(customerIds).flatMap(customerId ->
asyncUserRetrieve(customerId)
.subscribeOn(Schedulers.io()))
.subscribe(cust -> {
custDetails.add(cust);
});
2) Observable.from(customerIds).flatMap(customerId ->
asyncUserRetrieve(customerId)
.subscribe(cust -> {
custDetails.add(cust);
});
3) for(String id : customerId) {
Customer customer = asyncUserRetrieve(id).toBlocking().single();.
custDetails.add(cust);
}
@Override
public Observable<Customer> asyncUserRetrieve(String customerId) {
final URI uri = getURL(customerId);
final Response response = httpClient.callForResponse(uri);
if (response.getHttpStatus().is2xxSuccessful()) {
Customer customer = getResponse(response, customerId);
return Observable.just(customer);
}
return Observable.just(new Customer().setError(true));
}