RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
from(something)
something
should be computed only after subscription to the observabledefer
: imagine you have Observable.just(networkRequest())
defer
it:Observable
.defer(() -> Observable.just(networkRequest())
.map()
.subscribe()
networkRequest()
will be executed only after subscription.
PublishSubject#onNext
Merge
, as long as the clients dont emit errors. I see there is even a mergeDelayError
in case you want to wait for all other clients to complete first. If bulk insert from a single client is easier than combining events from different clients, do the buffer operation before you merge.
flatMap
.
PublishSubject<Observable<T>>
, you can just call PublishSubject.OnNext(t)
inside put
. Do first subscribe to the PublishSubject
with PublishSubject.asObservable().Merge().Subscribe(...)
(doesn't strictly need the asObservable if you subscribe locally). Just make sure you don't expose the Subject anywhere.
Observer.Create()
, but that doesn't allow you to call merge
anymore. So you kinda need private Observer ob;
public constructor() {
PublishSubject<Observable<T>> sub = PublishSubject.create();
sub.merge().subscribe(...);
ob = sub.asObserver();
}
public void put(Observable<T> t) {
ob.onNext(t);
}