Опрос базы данных с использованием RxScala

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

object MyDatabaseService {

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

Мне нужно начать с Observable, который будет генерировать 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)
}

В моем Обозревателе, который я передаю функции, у меня реализованы onNext, onError и onCompleted! Однако есть пара вопросов:

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

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

1 ответ

Решение

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

Предположим первый service.getAllTableEntries нужно 30 секунд, второй и третий service.getAllTableEntries нужно 1 секунда

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

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

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

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

Другие вопросы по тегам