2015-08-31 3 views
0

Я пытаюсь написать тест, чтобы увидеть использование onBackPressureDrop в RxScala.Как вызвать исключение противодавления, застегнув два наблюдаемых?

Я скопирую быстрый Наблюдаемый с медленным, с простой функцией застежки.

Любопытно, что тот же пример в RxJava создает исключение, но с RxScala, похоже, не требуется инструкция onBackPressureDrop.

Тест выглядит следующим образом:

@Test def testWithoutBackPressure() { 
    val fast = Observable.interval(1 millis).take(100) 
    val slow = Observable.interval(1000 millis).take(100) 

    val res = fast.zipWith(slow)(_*_) 

    res.subscribe(
     n => { println("[testWithoutBackPressure] " + n) }, 
     e => e.printStackTrace(), 
    () => println("testWithoutBackPressure done") 
    ) 

    } 

Как я могу сделать этот код потерпеть неудачу из-за отсутствия противодавления?

ответ

0

Размер внутреннего буфера по умолчанию в RxJava равен 128. Поэтому ваши коды не будут бросать MissingBackpressureException. Я также переписал ваши коды на Java и не видел MissingBackpressureException.

Таким образом, вы можете изменить take(100) на номер take(1024), чтобы сделать его броском MissingBackpressureException.

Смежные вопросы