Я использую 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 в серверных проектах.
Спасибо!