1

TableEntries 我从 RxScala 开始,我正在尝试提出一种轮询机制,以检查每个间隔(比如 20 秒)的数据库,以检查表中的某些行是否有任何变化。

object MyDatabaseService {

  def getAllEntries: List[MyTableEntries] = ???
}

我需要从一个会发出 List[MyTableEntries] 的 Observable 开始。所以我从以下开始:

class MyDBObservable(service: MyDatabaseService, observer: Observer[Seq[MyTableEntries]]) extends Observable[Seq[MyTableEntries]] {

  val o = Observable.interval(10.seconds).map { _ => service.getAllTableEntries }
  o.subscribe(observer)
}

在我传递给函数的观察者中,我实现了 onNext、onError 和 onCompleted!但是有几个问题:

  1. 如果我的数据库响应时间超过 30 秒会发生什么
  2. 如果我的数据库完全关闭会怎样?

这是我所做的有效方法吗?建议?

4

1 回答 1

1

如果我的数据库响应时间超过 30 秒会发生什么

假设第一个service.getAllTableEntries需要 30 秒,第二个和第三个service.getAllTableEntries需要 1 秒。

然后在您的示例中,第一个service.getAllTableEntries发生在 10 秒,第二个发生在 40 秒,第三个发生在 41 秒。

基本上,不会因为长时间运行的操作而跳过事件。相反,只是延迟事件。

如果我的数据库完全关闭会怎样?

如果是这样,我认为service.getAllTableEntries会抛出异常,并且您将在onError.

于 2015-06-08T06:32:04.370 回答