package com.nisum.java9Features.reactivestreams; import java.util.concurrent.Flow.Subscriber; import java.util.concurrent.Flow.Subscription; import java.util.logging.Logger; public class MySubscriber implements Subscriber<Employee> { private final static Logger log =Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private Subscription subscription; private int counter = 0; @Override public void onSubscribe(Subscription subscription) { log.info("Subscribed"); this.subscription = subscription; this.subscription.request(1); //requesting data from publisher log.info("onSubscribe requested 1 item"); } @Override public void onNext(Employee item) { log.info("Processing Employee " + item); counter++; this.subscription.request(1); } @Override public void onError(Throwable e) { log.info("Some error happened"); e.printStackTrace(); } @Override public void onComplete() { log.info("All Processing Done"); } public int getCounter() { return counter; } }