This repository contains the implementation for Project #2 of the "Enterprise Application Integration" course at the University of Coimbra. The project uses Reactive Streams and Spring WebFlux to build a scalable, asynchronous system for managing media content and user interactions.
The system comprises two key components:
-
Reactive Server:
- Implements reactive CRUD operations for media (movies and TV shows) and user data.
- Handles many-to-many relationships between users and media.
- Built using Reactive Streams for non-blocking data processing.
-
Reactive Client:
- Consumes data from the server reactively to generate reports.
- Demonstrates fault tolerance with retry mechanisms for network failures.
- Processes data efficiently, leveraging the power of Reactive Streams.
- Master declarative reactive programming with Reactor Core and Spring WebFlux.
- Build scalable, non-blocking systems using Reactive Streams principles.
- Implement client-side fault tolerance and retry mechanisms.
The server exposes the following endpoints:
- Media Management: Reactive CRUD operations for media entities.
- User Management: Reactive CRUD operations for user entities.
- Relationships: Manage many-to-many relationships between users and media.
The client generates the following reports by consuming server data:
- Titles and release dates of media items.
- Total and categorized media counts (e.g., highly-rated content).
- Media from specific decades, sorted by average rating.
- Comprehensive user statistics, including media subscriptions.
The client leverages Reactive Streams to efficiently fetch, transform, and display the data.