1. User Service
- Endpoint: /register
- Database: users
- RabbitMQ: Publishes to subscription_user_registration_queue and payment_user_registration_queue
2. Payment Service
- Endpoint: /make-payment
- Database: payment.users, payments
- RabbitMQ:
- Consumes from payment_queue
- Publishes to notification_queue
3. Notification Service
- RabbitMQ: Consumes from notification_queue
- External: Email Service
4. Subscription Service
- RabbitMQ:
- Publishes to payment_queue
- Publishes to notification_queue
5. RabbitMQ
- Queue: subscription_user_registration_queue
- Queue: payment_user_registration_queue
- Queue: payment_queue
- Queue: notification_queue
6. Databases
- User Service Database: users
- Payment Service Database: payment.users, payments
System Overview:
A subscription management platform enabling users to extend EMI payment dates by paying a minimal charge. The platform is built using a microservices architecture that facilitates independent operation, resilience, and scalability.
Microservices:
-
Userservice
- Responsibilities: Manages user registration and profile updates.
- Database: MongoDB (
users
collection). - Communication: Publishes user data to both
subscription_user_registration_queue
andpayment_user_registration_queue
.
-
Paymentservice
- Responsibilities: Manages payment processing, including EMI extensions.
- Database: MongoDB (
payments
andpayment.users
collections). - Communication:
- Consumes from
payment_queue
. - Publishes notifications directly to
notification_queue
.
- Consumes from
-
Notificationservice
- Responsibilities: Sends notifications, such as payment confirmations and reminders.
- Database: None (stateless).
- Communication: Consumes from
notification_queue
and interfaces with an external email service.
-
Subscriptionservice
- Responsibilities: Manages all subscription-related operations, including renewal processing.
- Communication:
- Publishes payment data to
payment_queue
. - Publishes notification data to
notification_queue
.
- Publishes payment data to
Data Flow:
-
User Registration:
- User registers via
userservice
. userservice
creates a user entry in theusers
database.userservice
publishes user data to bothsubscription_user_registration_queue
andpayment_user_registration_queue
.
- User registers via
-
Payment Processing:
- User initiates a payment via
paymentservice
. paymentservice
processes the payment, storing details inpayments
.paymentservice
retrieves user details frompayment.users
.paymentservice
publishes a notification tonotification_queue
.
- User initiates a payment via
-
Subscription Management:
- Subscription events trigger
subscriptionservice
. subscriptionservice
manages subscriptions and related EMI extensions.- Relevant data is published to
payment_queue
andnotification_queue
.
- Subscription events trigger
-
Notification Dispatch:
notificationservice
consumes messages fromnotification_queue
.- Sends emails through an external service to users about their payment status or reminders.
This documentation outlines a streamlined flow, ensuring each service is designed to operate independently while communicating effectively through designated RabbitMQ queues. This architecture promotes robustness, scalability, and responsiveness within the subscription management platform.