@Override public Publisher<Object> apply(GroupedFlowable<Object, Event> g) { return g.map(new Function<Event, Object>() { @Override public Object apply(Event event) { return event.instanceId + " - " + event.values.get("count200"); } }); } })
@Override public Flowable<String> apply(GroupedFlowable<Integer, Event> eventGroupedFlowable) { return eventGroupedFlowable .map(new Function<Event, String>() { @Override public String apply(Event event) { return "testUnsubscribe => Source: " + event.source + " Message: " + event.message; } }); } })
@Override public Flowable<String> apply(GroupedFlowable<Integer, Event> eventGroupedFlowable) { System.out.println("GroupedFlowable Key: " + eventGroupedFlowable.getKey()); groupCounter.incrementAndGet(); return eventGroupedFlowable.map(new Function<Event, String>() { @Override public String apply(Event event) { return "Source: " + event.source + " Message: " + event.message; } }); } }).subscribe(new DefaultSubscriber<String>() {
@Override public Flowable<String> apply(final GroupedFlowable<Integer, Integer> group) { if (group.getKey() < 3) { return group.map(new Function<Integer, String>() { @Override public String apply(Integer t1) { return "first groups: " + t1; } }) // must take(2) so an onComplete + unsubscribe happens on these first 2 groups .take(2).doOnComplete(new Action() { @Override public void run() { first.countDown(); } }); } else { return group.subscribeOn(Schedulers.newThread()).delay(400, TimeUnit.MILLISECONDS).map(new Function<Integer, String>() { @Override public String apply(Integer t1) { return "last group: " + t1; } }).doOnEach(new Consumer<Notification<String>>() { @Override public void accept(Notification<String> t1) { System.err.println("subscribeOn notification => " + t1); } }); } }