rxjava - 发布处理器竞争条件

时间:2017-08-01 21:57:55

标签: java rx-java rx-java2 reactivex

您好我是RxJava的新手和整个反应式编程理念,我想帮助理解一些概念。

这是事情,我有这个类调度消息,这个类有一个Inner PublishProcessor,这是我认为能够动态发布消息的最佳解决方案,因为似乎Observable / Flowable来自于alredy existant或收到的数据,比方说,我无法按下按钮N次。

所以这个类有这个调度(SomeClass c)调用我的发布者的OnNext方法,有效地向每个订阅者发送数据。 但是说网络请求在推送按钮的同时完成,两个消息都发生冲突,没有一个被有效发送,文档说这是预期的行为。

你会如何处理这种情况?这基本上就是它。

private ObservableList<ObservableResponse> list;

public static class ObservableList<T> {

    protected final PublishProcessor<T> onAdd;

    public ObservableList() {
        this.onAdd = PublishProcessor.create();
    }

    public void add(T value) {
        onAdd.onNext(value);
    }

    public io.reactivex.Observable<T> getObservable() {
        return onAdd.toObservable();
    }

    public PublishProcessor<T> getProcessor(){
        return onAdd;
    }

}

private MessageStream(){
    this.list = new ObservableList<>();
}

public static class helper{
    public static MessageStream instance = new MessageStream();
}

public void dispatchMessage(ObservableResponse x ){
    this.list.add(x);
}

可观察的反应本身就是一个POJO。

任何帮助都会受到赞赏,我知道文档很强大,但rx1还有很多关于rx2的东西,所以我真的很困惑......

0 个答案:

没有答案