如何使用RxJava在一个可观察对象上订阅多个观察者?

如何使用RxJava在一个可观察对象上订阅多个观察者?,java,rx-java3,Java,Rx Java3,我有一个可观察的,我希望多个订阅者共享这个可观察的。 每个订阅者将筛选每个事件并对其进行处理 可观察的是通过以下方式创建的: @Override public List<Event> findNewEvents() { List<Event> results = new ArrayList<>(); while(! fetchedEvents.isEmpty()) { results.ad

我有一个
可观察的
,我希望多个订阅者共享这个可观察的。 每个订阅者将筛选每个事件并对其进行处理

可观察的
是通过以下方式创建的:

    @Override
    public List<Event> findNewEvents() {
        List<Event> results = new ArrayList<>();
        while(! fetchedEvents.isEmpty()) {
            results.add(fetchedEvents.poll());
        }
        return results;
    }

    @Override
    public Observable<List<Event>> findNewObservableEvents() {
        return Observable.just(findNewEvents());
    }
@覆盖
公共列表findNewEvents(){
列表结果=新建ArrayList();
而(!fetchedEvents.isEmpty()){
add(fetchedEvents.poll());
}
返回结果;
}
@凌驾
公共可观测findNewObservableEvents(){
返回可观察的。just(findNewEvents());
}
代码如下:

            Observable<List<Event>> newEvents = reader.findNewObservableEvents();

            Disposable riskApproveRiskEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
                    .flatMap(Observable::just)
                    .filter(risk::isForRiskApproval)
                    .subscribe(risk::approveRisk);

            Disposable fundingCheckFundabilityEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
                    .flatMap(Observable::just)
                    .filter(funding::isForFundingFundabilityCheck)
                    .subscribe(funding::checkFundability);

            Disposable fundingFundEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
                    .flatMap(Observable::just)
                    .filter(funding::isForFundingFund)
                    .subscribe(funding::fund);
Observable newEvents=reader.findnewobservable事件();
一次性风险审批人iskeventsdisposable=newEvents.flatMapIterable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性基金CheckFundabilityEventsDisposable=newEvents.FlatMapetable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
一次性基金FundEventsDisposable=newEvents.FlatMapetable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
我试过:

newEvents.share()
以及
newEvents.publish()

尝试时:
newEvents.create()
我需要提供一个
observeOnSubscribe
对象,但我不知道如何获取它


诀窍是什么?

如果您不想多次使用
findNewObservableEvents
,请使用
publish
,订阅者订阅后,在
ConnectableObservable
上调用
connect

ConnectableObservable newEvents=reader.findnewobbservableEvents().publish();
一次性风险批准人Iskevents一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性资金支票资金能力即使一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
可支配资金资金事件可支配=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
一次性连接=newEvents.connect();

如果您不想多次使用
findNewObservableEvents
,请使用
publish
,订阅者订阅后,在
ConnectableObservable
上调用
connect

ConnectableObservable newEvents=reader.findnewobbservableEvents().publish();
一次性风险批准人Iskevents一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性资金支票资金能力即使一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
可支配资金资金事件可支配=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
一次性连接=newEvents.connect();