2016-04-27 2 views
2

Я использую java ReactiveX (RxJava) в scala Play Framework 2.5 для асинхронного общения с couchbase. Я хотел бы знать, сколько времени потребовалось для моего наблюдения для запуска? Я определяю свой наблюдаемый, используя приведенный ниже код.Сколько времени потребовалось для запуска Observable с использованием RxJava (ReactiveX)?

def get(id: String) : Observable[Profile] = { 
    this.bucket 
    .async() 
    // can I have a start time here possibly using map? 
    .get(id) 
    .map[Profile](toProfile) 
    // can I have an end time here possibly using map? 
} 

Я называю это с помощью следующих

Thread.sleep(1000) 

val observable = get("myID") 

Thread.sleep(1000) 

// measure start time here 
println("observable: " + observable.toBlocking.first()) 
// measure end time here 

Thread.sleep(1000) 

Как я могу определить, сколько времени потребовалось для наблюдаемого бежать?

Благодарим Вас заранее

Фрэнсис

ответ

3

Вы хотите начать свой таймер в doOnSubscribe() блоке, а затем завершить его в onTerminated().

Примером может быть что-то вроде:

long start; 
observable() 
    .doOnSubscribe(() -> start = System.nanoTime()) 
    .doOnTerminate(() -> System.out.println(System.nanoTime() - start)); 

В качестве альтернативы вы могли бы следовать, что Netflix делать с RxNetty и вернуть начальное время как часть объекта, протекающего через цепь, и использовать это в конце.

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