2016-03-07 29 views
5

Ostatnio czytałem trochę o rx-java. Zastanawiam się, czy ramy pasują do ustawy o systemie komunikacji między wątkami. Pracuję na serwerze REST napisanym w Javie. Za każdym razem, gdy jakiś zasób jest PUT/POSTed, chcę wykonać pewne obliczenia przy użyciu puli wątków roboczych. Jednak nadal chciałbym móc monitorować wnioski, być może, aby wydrukować niektóre statystyki. Zasadniczo chciałbym Observable, dzięki czemu mogę obsłużyć żądania w elastyczny sposób z wieloma Observer s.Utwórz obserwowalne dla pętli zdarzeń

Moje pytanie brzmi: jak utworzyć odpowiednie Observable? Większość poradników, jakie widziałem, dotyczy operacji na Obserables, takich jak mapowanie itp. Obervables są najczęściej tworzone z kolekcji lub zakresów całkowitych. W każdym razie wydaje się niemożliwe przeniesienie nowych wartości do stworzonych obserwowalnych. Najwyraźniej jedynym sposobem na zachowanie tej elastyczności jest użycie Observable.create. Jednak wydaje się, że jest to raczej niski poziom. Musiałbym zaimplementować listę kolejek dla każdego nowego abonenta i wykonać każdy z nich. Czy jest to naprawdę konieczne lub jest już zaimplementowane już w wersji rx-java?

Odpowiedz

5

To, czego szukasz, to Subject. Działają one zarówno jako Observer, jak i Observables. Na przykład ReplaySubject będzie odtwarzać wszystkie zdarzenia wysłane do niego wszystkim subskrybentom.

Subject<String> replaySubject = ReplaySubject.create(); 
replaySubject.subscribe(s -> System.out.println(s)); 

// elsewhere... 

replaySubject.onNext("First"); 
replaySubject.onNext("Second"); 
replaySubject.onComplete();