rx-java缓冲区正在丢失项目

时间:2014-04-16 21:01:33

标签: rx-java

我有一个我订阅了两次的PublishSubject。第一个订阅者只计算处理的项目数,这个值总是与我通过观察者发送的值相匹配。但是,另一个用户正在使用缓冲区,我经常(75%)没有收到通过观察者的所有项目。我使用缓冲区错了吗?我停止发送给观察者以确保所有物品都被处理后,我等待的时间超过了时间。

Integer downloads1 = 0;
Integer downloads2 = 0;
PublishSubject<Object> subject = PublishSubject.create();
// this subscriber count matches the expected
subject.subscribe(s -> {
  synchronized (downloads1) {
    downloads1 += 1;
  }
});
// this subscriber seems to miss items about 75% of the time
subject.buffer(100, TimeUnit.MILLISECONDS, 10).subscribe(list -> {
  synchronized (downloads2) {
    downloads2 += list.size();
  }
});

1 个答案:

答案 0 :(得分:0)

也许您遇到了这个错误:https://github.com/Netflix/RxJava/issues/534

顺便说一句,你应该使用初始值为0的reduce(R initialValue, Func2<R,? super T,R> accumulator)而不是订阅,那么你不需要自己进行任何同步。