In the previous chapter, Functional Design Patterns, we examined the functional design pattern category and compared functional design to functional programming. We reviewed and implemented the execute around pattern, lambda pattern, loan pattern, MapReduce pattern, memoization pattern, streams pattern, and tail call pattern.
In this chapter, we will explore the reactive design pattern category and its individual design patterns of asynchronous communication, autoscaling, bounded queue, bulkhead, caching, circuit breaker, event-driven communication, fail fast, failure-handling, fan-out and quickest reply, idempotency, monitoring, publisher-subscriber, self-containment, and stateless. Our exploration of the reactive design patterns is fueled by the desire to design and develop systems that have characteristics of resilient, reliable, scalable, and message...