As we saw in the previous chapter, the Reactive Streams specification makes reactive libraries compatible with each other and has also resolved the backpressure problem by introducing the pull-push data exchange model. Despite the significant improvements introduced by the Reactive Streams specification, it still only defines APIs and rules, and does not offer a library for everyday use. This chapter covers one of the most popular implementations of the Reactive Streams specification, Project Reactor (or Reactor for short). However, the Reactor library has evolved a lot since its early versions and has now become the most state-of-the-art reactive library. Let's look at its history to see how the Reactive Streams specification has shaped the API and implementation details of the library.





















































