What is Backpressure in Reactive Streams?

Backpressure in Reactive Streams :

Backpressure is the ability of a Subscriber to signal the Publisher how many data items it can handle at a time. This prevents the Publisher from overwhelming the Subscriber with more data than it can process.

Example:

  • A Subscriber requests 5 items from the Publisher using request(5).
  • The Publisher sends only 5 items.
  • Once the Subscriber processes these items, it can request more data.
Example (Java Implementation) :
import org.reactivestreams.*;

public class ReactiveStreamsExample {
    public static void main(String[] args) {
        Publisher<Integer> publisher = subscriber -> {
            subscriber.onSubscribe(new Subscription() {
                @Override
                public void request(long n) {
                    for (int i = 1; i <= n; i++) {
                        if (i > 10) {
                            subscriber.onComplete();
                            return;
                        }
                        subscriber.onNext(i);
                    }
                }

                @Override
                public void cancel() {
                    System.out.println("Subscription canceled");
                }
            });
        };

        Subscriber<Integer> subscriber = new Subscriber<>() {
            @Override
            public void onSubscribe(Subscription subscription) {
                System.out.println("Subscribed");
                subscription.request(5); // Request 5 items
            }

            @Override
            public void onNext(Integer item) {
                System.out.println("Received: " + item);
            }

            @Override
            public void onError(Throwable throwable) {
                System.err.println("Error: " + throwable.getMessage());
            }

            @Override
            public void onComplete() {
                System.out.println("Complete");
            }
        };

        publisher.subscribe(subscriber);
    }
}?

Output :
Subscribed
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Complete?