Rx Java утилизация Observable / Flowable в проекте сервера микросервиса - PullRequest
0 голосов
/ 23 апреля 2020

Я использую Rx Java для проекта микросервиса сервера, где использую Jetty в качестве сервера сервлетов HTTP.

Я обрабатываю запросы либо с клиентского, либо с основного сервера с Observable для разных потоков. Когда запрос достигнет приведенного ниже API, я верну Ответ после того, как Observable завершит работу.

@GET
@Path("{uuid}")
@Produces(MediaType.APPLICATION_JSON)
public Response doThingsForClient(@PathParam("uuid") String uuid) {
   Worker worker = new Worker(uuid);
   worker.run();
   return Response.ok("Awesome").build();
}

class Worker {
   String uuid = null;
   public Worker(String uuid) {
      this.uuid = uuid;
   }

   public void run() {
      Observable.concat(Observable1,Observable2,Observable3);
   }
}

Мне интересно, нужно ли мне избавиться от этих Observables или Flowables. В соответствии с этим: Имеет ли RxJava2 автоматическое удаление наблюдаемого при вызове завершения или ошибки? и исходный код RxJava3, я не думаю, что Flowable по крайней мере удаляется автоматически?

Если мне нужно вручную Распределите ресурсы. Лучше создать CompositeDisposable, затем добавить одноразовое значение к CompositeDisposable на каждом вызываемом Наблюдателе (Observable1...Observable3) onSubscribe(), вызывать compositeDisposable.dispose() после завершения concat.

Должен ли я также контролировать Причал AbstractLifeCycle, чтобы избавиться от этих Наблюдаемых (Звучит как Android)? Я не уверен, как другие люди используют Rx Java на стороне сервера, открыты для любых предложений по этим вопросам и общего подхода Rx в серверных проектах.

Спасибо!

...