@Override public void start() throws Exception { Observable<String> o = Observable.just("someID1", "someID2", "someID3", "someID4"); // This scheduler can execute blocking actions Scheduler scheduler = io.vertx.rxjava.core.RxHelper.blockingScheduler(vertx); // All operations done on the observer now can be blocking o = o.observeOn(scheduler); // Load from a blocking api o = o.map(id -> blockingLoad(id) ); o.subscribe(item -> { System.out.println("Got item " + item); }, err -> { err.printStackTrace(); }, () -> { System.out.println("Done"); }); } }