2015-05-28 2 views
1

TableEntries Я начинаю с RxScala, и я пытаюсь создать механизм опроса, который проверяет базу данных на каждый интервал (скажем, 20 секунд), чтобы проверить, было ли какое-либо изменение в некоторых из строк в таблице.Опрос базы данных с использованием RxScala

object MyDatabaseService { 

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

Мне нужно будет начать с наблюдаемого, который испустит List [MyTableEntries]. Так что я начал со следующим:

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

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

В моей Observer, что я передаю в функцию, я имею onNext, OnError и OnCompleted реализованы! Есть несколько вопросов, однако:

  1. Что произойдет, если база данных занимает более 30 секунд, чтобы ответить
  2. Что произойдет, если моя база данных полностью вниз?

Действительно ли это правильный подход, что я сделал? Предложения?

ответ

1

Что произойдет, если база данных занимает более 30 секунд, чтобы ответить

Пусть первый service.getAllTableEntries необходимо 30 секунд, второй и третий service.getAllTableEntries потребность в 1 сек.

Тогда в вашем примере первый service.getAllTableEntries происходит через 10 секунд, второй - через 40 секунд, третий - через 41 секунду.

В принципе, события не будут пропускаться из-за длительных действий. Вместо этого просто задерживайте события.

Что произойдет, если моя база данных полностью опустится?

Если да, то я думаю, что service.getAllTableEntries будет сгенерировано исключение, и вы получите его в onError.