Reactive streams (http://www.reactive-streams.org/) defines a mechanism to provide asynchronous stream processing with non-blocking back pressure.
Reactive streams are based on three elements:
- It is a publisher of information
- It has one or more subscribers of this information
- It provides subscription between the publisher and a consumer
Java 9 has included three interfaces--Flow.Publisher, Flow.Subscriber, and Flow.Subscription--and a utility class, SubmissionPublisher, to allow us to implement reactive stream applications.
In this recipe, you will learn how to implement your own reactive application using only three interfaces. Take into account that we will implement the expected behavior between the three elements. The publisher will only send elements to those subscribers who have requested them, and it will do this in a concurrent way. But you can modify this behavior...