liveBook · Manning

Reactive system

As explained in Quarkus in Action

A reactive system is a distributed software system designed to remain responsive through resiliency, elasticity, and asynchronous message-driven communication.

A reactive system is a distributed system designed to remain responsive under demand and failure. It combines responsiveness, resiliency, elasticity, and asynchronous message passing. In microservices, message-driven communication lets services exchange information without blocking threads or coupling their implementations too closely. section 9.2 section 9.0

Its properties reinforce one another:

  • Responsiveness handles user requests in a timely fashion and includes identifying and dealing with failures. section 9.2
  • Resiliency keeps the system responsive during failures through isolated, highly available services and fast transitions to backups. section 9.2
  • Elasticity scales service instances horizontally up or down according to demand, including scaling services down when unused. section 9.2
  • Message-driven communication provides asynchronous service interactions that support the other properties. section 9.0 section 9.2

In Quarkus, MicroProfile Reactive Messaging supplies a unified API for propagating asynchronous messages between services. Connectors integrate that API with messaging providers, while Reactive Streams and Mutiny support reactive pipelines. section 9.0 section 9.9

Car-rental services

A Billing service communicates asynchronously with a Reservation service through RabbitMQ using AMQP 0-9-1 and exchanges messages with a Rental service through Apache Kafka. In Quarkus, a reactive connection can be assembled with @Incoming and @Outgoing, configuration, and Dev Services. section 9.9

Figure 9.2 The reactive system architecture
figure

Use the architecture figure to relate responsiveness, resiliency, elasticity, and message-driven communication. section 9.2

How Quarkus in Action covers it

How deep it goes
Defines four properties, explains their roles, and applies them through Quarkus messaging without detailing broker internals.
Examples
Uses a car-rental Billing service with Reservation and Rental services, RabbitMQ, Kafka, AMQP, and Quarkus messaging annotations.
What it assumes
Builds on reactive programming, asynchronous execution, nonblocking I/O, and microservice architecture.
What you can do after
Apply it via MicroProfile Reactive Messaging by connecting Quarkus services to Kafka or RabbitMQ with annotations and configuration.
How it connects
Connects reactive programming, microservices, asynchronous messaging, Reactive Streams, Kafka, RabbitMQ, resiliency, and elasticity.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Quarkus in Action. The section links point to the parts of the book it draws on.