Responsive: A reactive system should provide a rapid and consistent response time and hence a consistent quality of service
Resilient: A reactive system should remain responsive in case of random failures through replication and isolation
Elastic: Such a system should remain responsive under unpredictable workloads through cost-effective scalability
Message-Driven: It should rely on asynchronous message passing between system components\
In contrast, reactive programming is a programming paradigm where the focus is on developing asynchronous and non-blocking components.
https://tech.trivago.com/post/2021-03-16-java-reactive-programming-real-world/