This chapter introduced the powerful concept of data-streams processing and provided many examples of functional programming usage. It explained what streams are, how to process them, and how to build processing pipelines. It also demonstrated how one can organize stream processing in parallel and some of the possible pitfalls.
In the next chapter, we are going to discuss reactive systems, their advantages, and possible implementations. You will learn about asynchronous non-blocking processing, reactive programming, and microservices, all with code examples that demonstrate the main principles on which these reactive systems are based.