package com.nisum.basicFlowExample; import java.util.concurrent.Flow; public class PrintSubscriber<Integer> implements Flow.Subscriber<Integer> { private Flow.Subscription subscription; @Override public void onSubscribe(Flow.Subscription subscription) { this.subscription = subscription; subscription.request(1); } @Override public void onNext(Integer item) { // if(item==5) throw new RuntimeException("Something is wrong"); System.out.println("PS ::" + item); subscription.request(1); if(item.equals(5)) subscription.cancel(); } @Override public void onError(Throwable error) { System.out.println("RECEIVED AN ERROR IN PRINT SUBSCRIBER: " + error.getMessage()); } @Override public void onComplete() { System.out.println("PrintSubscriber is complete"); } }