Опрос базы данных с использованием 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! Однако есть пара вопросов:
- Что произойдет, если моя база данных займет более 30 секунд, чтобы ответить
- Что произойдет, если моя база данных полностью не работает?
Это правильный подход, что я сделал? Предложения?
1 ответ
Что произойдет, если моя база данных займет более 30 секунд, чтобы ответить
Предположим первый service.getAllTableEntries
нужно 30 секунд, второй и третий service.getAllTableEntries
нужно 1 секунда
Тогда в вашем примере первый service.getAllTableEntries
происходит через 10 секунд, второй - через 40 секунд, третий - через 41 секунду.
По сути, события не будут пропущены из-за длительных действий. Вместо этого просто отложите события.
Что произойдет, если моя база данных полностью не работает?
Если так, я думаю service.getAllTableEntries
выбросит исключение, и вы получите его в onError
,