如何在所有订阅者收到RxJava2上的项目时触发事件?

时间:2017-08-16 20:05:51

标签: java rx-java2

我根据以下文章rxjava2 producer-consumer example在RxJava上开发了一个消费者/制作人。

但我的用例有点复杂。

我将使用多个订阅者,每个订阅者都有某种过滤器(订阅者及其过滤器的数量会在运行时变化),并且会有一些itens不会被任何订阅者处理

我需要获取所有剩余的项目(不符合任何订阅者的资格)进行一些后期处理。

我尝试过使用方法" onAfterNext()"在生产者上,但是这个方法在订阅者处理项目之前执行

有办法吗?

1 个答案:

答案 0 :(得分:0)

使用PublishSubject类解决这个问题,以追加我的听众。

PublishSubject<SQSMessage<String>> ps = PublishSubject.create()
ps.publish();
ps.subscribe(m -> System.err.println(m));

flowable.parallel()
    .runOn(Schedulers.io())
    .map(item -> {   
        // This map sends the object to my listeners on PublishSubject
        ps.onNext(item);
       return item;
    })
    .sequential()
    // This map does the post processing after
    // the object was sent to the listeners
    .map(s -> {//do post process stuff})
    .subscribe();