繁体   English   中英

RxScala缓冲元素

RxScala buffer elements

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在需要解析字符串的应用程序中使用了RxScala。 我的代码:

import java.util.concurrent.TimeUnit
import rx.lang.scala.Subject
import rx.lang.scala.schedulers.NewThreadScheduler
import rx.lang.scala.subjects.{SerializedSubject, PublishSubject}
import scala.concurrent.duration.Duration

object RxScala extends App {
  val subject: Subject[String] = SerializedSubject(PublishSubject())

  val processLines = (lines: Seq[String]) => {
    // long action
  }

  subject
    .subscribeOn(NewThreadScheduler())
    .tumblingBuffer(Duration(2, TimeUnit.SECONDS), 100)
    .subscribe(processLines)

  for(i <- 1 to 100000) {
    subject.onNext("Line " + i)
  }
}

我有问题,因为我可以更快地添加行,然后可以处理它们。

我想创建缓冲区,例如200行,如果缓冲区已满,则在缓冲区未满时暂时忽略新记录,例如

Add 100 records (A)
Add 100 records (B)
Program start processLines (A) // buffer have (B) elements
Add 100 records (C) // buffer have (B, C) elements and it is full
Add 100 records (D) // elements are ignored
ProcessLines is finished 
Program start processLines (B) // buffer have (C) elements
Add 100 records (E) // buffer have (C, E) elements

RxScala有执行此操作的方法吗?

1 个回复
subject.
    tumblingBuffer(Duration(2, TimeUnit.SECONDS), 100).
    onBackpressureDrop.
    observeOn(NewThreadScheduler()).
    subscribe(processLines)

http://reactivex.io/documentation/operators/backpressure.html

onBackpressureDrop丢弃源的排放Observable,除非下游订户有待处理的请求,在这种情况下,它将发出足够的物料来满足请求

1 在RxJava和RxScala中转换可观察对象

我有一个Observable,它发出如下的条目列表: 现在如何将内容传递到另一个传入MyEntry的Observable中? 我的意思是,对于原始Observable中的每个条目,我需要将它们通过管道传递到另一个具有以下类型签名的Observable: ...

2 使用RxScala进行数据库轮询

我从RxScala开始,我试图提出一种轮询机制,该机制会检查每个间隔(例如20秒)的数据库,以检查表中某些行是否有任何更改。 我需要从一个Observable开始,它将发出List [MyTableEntries]。 因此,我从以下内容开始: 在传递给函数的Observer中, ...

3 在RxScala中组合可观察物

我想知道是否有人可以在这里给我一些提示。 我正在学习RxScala,我需要执行以下练习:-实现一个可观察对象,该对象每5秒和12秒发出一次事件 我想知道下面的代码吗? 还没有设法为可观察的组合器找到很多文档 感谢和问候马可 ...

4 具有超时的RxScala递归流

我试图递归定义一个可观察对象,该对象从某个主题发出项目,或者如果经过一定时间,则使用默认值,在这种情况下,我使用的是计时器的默认值零。 我正在使用RxScala,并从以下代码开始: 这似乎应该工作,但输出令人困惑。 每隔零个序列包含两个,而不是预期的四个。 发射两个零,剩余的三秒钟 ...

6 RxScala观察者和订阅

我刚刚开始使用RxScala,并遇到了一些示例。 我了解有一个Observable合同,其中Observer特性的定义如下: 我可以使用观察者订阅事件的可观察流。 因此,观察者就是为观察者特征提供这3种方法的实现的任何事物。 现在,在以下示例中: 我正在创建一个Long ...

7 带有回放的RxScala Observables

我试图了解RxScala中的replay 。 我创建一个这样的可观察对象: 其中intPerSecond每秒从0开始每秒发射一个整数。第一个订阅的观察者确实每秒看到一个整数。 如果第二个观察者在t = 6秒时加入,则从那一刻起,他们都将以一秒钟的间隔看到匹配的流6 ... 7 ... ...

8 使用RxScala进行反应式编程

我有一个Observable通过Socket协议连接到服务。 与套接字的连接通过客户端库进行。 我使用的客户端库有java.util.Observer,我可以注册被推入的事件 我有两个我不明白的开放性问题。 如何在订阅服务器中获得Step:3的结果? 每次当我得到MyEv ...

9 将RxJava转换为RxScala

有没有办法在一个项目中同时使用RxJava和RxScala ? 我们有一个用Java编写的模块,它使用JavaObservable ( RxJava )。 然后我们有一个Scala模块应该使用Java模块但是用Scala编写。 有没有方便的方法将这些转化为另一种? ...

10 基于RxJava 2.0的RxScala

RxJava 2.0即将完成(RC3)。 是否有基于此版本的(实验性)RxScala实现? RxJava 2.0针对Java8。这是否会对RxScala产生任何影响,例如Scala 2.12是否会成为先决条件? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM