//using http://rxscala.github.io/ 0.18.3 val five = Observable.interval(5000 millis).take(1) val jdbc = Observable[String](subscriber => { val rs = conn.prepareStatement("select name from persons").executeQuery() while (rs.next() && !subscriber.isUnsubscribed) { subscriber.onNext(rs.getString("name")) } subscriber.onCompleted() }) val max = jdbc.takeUntil(five) println(max.toBlockingObservable.toList)