@Test public void testZipObservableOfObservables() { EventStream.getEventStream("HTTP-ClusterB", 20) .groupBy(e -> e.instanceId) // now we have streams of cluster+instanceId .flatMap( ge -> { return ge.scan( new HashMap<String, String>(), (accum, perInstanceEvent) -> { accum.put("instance", ge.key()); return accum; }); }) .take(10) .toBlocking() .forEach(System.out::println); System.out.println("**** finished"); }