Я работаю с RxJava и Retrofit, чтобы использовать разные конечные точки.Я работаю с несколькими микросервисами, и все они используют RxJava и Retrofit для использования других сервисов.
У меня нет опыта работы с Observables, поэтому я проверяю некоторые примеры в Интернете, чтобы узнать,как использовать его, а также создать пару сервисов самостоятельно.Я видел, что метод подписки () всегда используется.Примерно так:
@Setter
@Getter
private MovieDetail movieDetail;
public Observable<Movies> observe() {
allMoviesClientRetrofit
.getMovies()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(new Observer<Movies>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onNext(Movies movies) {
allMovies = movies;
});
В службах моей работы я искал везде и подписка () никогда не использовалась, но все работает правильно.Как это возможно?
Как вы видите, в этом примере мне нужно вернуть Observable, чтобы мой личный код соответствовал моей работе, но если я использую метод подписки (), он возвращает объект подписки, и это нене работает
Это часть кода моей работы, где вы можете видеть, что subscribe () никогда не вызывается, но работает
@GetMapping(
value = "/something",
produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
public Single<ResponseEntity<Something>> getSomething() {
return retrieveSomethingFactory
.observe()
.toSingle()
.map(something -> {
return ResponseEntity
.status(httpStatus)
.body(something);
});
class retrieveSomethingFactoryImpl implements retrieveSomethingFactory
@Override
public Observable<Something> observe() {
return Observable
.defer(() -> {
Observable<Something1> something1 = retrieveSomething1Factory
.call(link) // Retrofit call
.observe()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation());
Observable<Something2> something2 = retrieveSomething1Factory
.call(link) // Retrofit call
.observe()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation());
return Observable
.zip(something1, something2.toList(), (something1, something2) -> {
....
....
....
return something;
});
Спасибо