This project implements a distributed audio streaming system using Java, REST, and JMS. It simulates a full-featured platform where users can upload, listen to, and rate audio recordings, manage subscriptions, and interact with content categorized by genres and metadata.
The system consists of the following components:
- Sends REST requests to the central server.
- Can be CLI or GUI-based.
- Displays server responses to the user.
- Acts as a middleware between the client and the subsystems.
- Receives REST requests, forwards them via JMS to the corresponding subsystem.
- Does not store data.
- Subsystem 1: Manages users and cities.
- Subsystem 2: Manages audio recordings and categories.
- Subsystem 3: Manages packages, subscriptions, ratings, listens, and favorite lists.
All subsystems use MySQL as a database and communicate only via JMS.
- User: name, email, birth year, gender, city
- City: name
- Audio: name, duration, owner, timestamp, multiple categories
- Category: name
- Package: name, current monthly price
- Subscription: user, package, start time, price at the time, unique per user/month
- Listening: user, audio, timestamp, start second, duration
- Rating: user, audio, score (1–5), timestamp
- Favorites: user, audio (unique per user)
- MySQL Server + Workbench or equivalent.
- Java (client, server, and subsystems).
- JMS implementation
- Create city
- Create user
- Change user email / city
- List all cities / users
- Create category / audio
- Edit audio name / add category
- Delete audio (by owner)
- List all categories / audio / audio's categories
- Create package / change price
- Subscribe user to a package
- Listen to audio
- Add to favorites
- Rate (create/update/delete)
- View subscriptions / listens / ratings / favorites