In the previous chapter, we learned the essentials of Project Reactor, as well as the behavior of reactive types and operators and how they help to solve different business problems. Along with the straightforward API, we saw that, under the hood, there are hidden complex mechanisms that allow concurrent, asynchronous, nonblocking message processing. In addition to this, we explored available backpressure controls and related strategies. As we saw in the previous chapter, Project Reactor is more than just a reactive programming library. It also offers add-ons and adapters that make it possible to build reactive systems, even without the Spring Framework. Through this, we saw an integration of Project Reactor with Apache Kafka and Netty.
While Project Reactor may work well without Spring Framework, it is usually not enough to build a...