Reactive systems and event-driven architecture are becoming indispensable to application design, and companies are taking note. Reactive systems ensure that applications are responsive, resilient, and elastic no matter what failures or errors may be occurring, while event-driven architecture offers a flexible and composable option for distributed systems. This practical book helps Java developers bring these approaches together using Quarkus 2.x, the Kubernetes-native Java framework.
Clement Escoffier and Ken Finnigan show you how to take advantage of event-driven and reactive principles to build robust distributed systems, reducing latency and increasing throughput, particularly in microservices and serverless applications. You'll also get a foundation in Quarkus to help you create true Kubernetes-native applications for the cloud.
Understand the fundamentals of reactive systems and event-driven architecture Learn how to use Quarkus to build reactive applications Combine Quarkus with Apache Kafka or AMQP to build reactive systems Develop microservices that utilize messages with Quarkus for use in event-driven architectures Learn how to integrate external messaging systems, such as Apache Kafka, with Quarkus Build applications with Quarkus using reactive systems and reactive programming concepts
Pros * The book is written in a clear and accessible language, making it easy to grasp the concepts. * It does an excellent job of distinguishing between Reactive programming and traditional synchronous/blocking/imperative methods. * The use of Quarkus and its extensions as examples to demonstrate interactions with message brokers, HTTP, and databases is particularly helpful.
Cons * The content is somewhat basic and introductory. Most topics are covered only at a surface level, lacking in-depth exploration. * While I was looking forward to insights on the practical experiences and challenges of using Reactive Systems, this aspect was underrepresented. The advice provided is quite general, like the importance of not overwhelming the target service during retries and ensuring services are idempotent. * In terms of the intended audience, the author suggests the book is for intermediate to advanced engineers or architects. However, in my view, the content is more aligned with the needs of mid-level programmers and may not fully meet the expectations of architects.
This book could use some more attention from the developer community. While the examples are Quarkus-based, the book provides plenty of background theory on reactive programming in general. The approach can be applied to basically any reactive framework.