/Notification-Management

Primary LanguageJavaApache License 2.0Apache-2.0

Notification-Management

Functional Requirements:

  • Multi-channel Support: The system must support sending notifications through various channels including email, SMS, push notifications, and in-app messages.

  • Multiple Notification Types: Support transactional (e.g., order confirmation), promotional (e.g., discount offers), and system-generated alerts (e.g., password reset).

  • Scheduled Delivery: Support scheduling of notifications for future delivery.

  • Rate Limiting: Ensure that users receive only a limited number of promotional messages in a given day to prevent spam.

  • Retry Mechanism: Handle notification delivery failures, retrying when necessary (e.g., failed SMS or email).

Non-Functional Requirements:

  • Scalability: The system should handle millions of notifications per minute, supporting millions of concurrent users.

  • High availability: Ensure minimal downtime so that notifications are delivered even in case of failures.

  • Reliability: Guarantee at-least-once delivery of notifications, with the possibility of exactly-once semantics for certain use cases.

  • Low latency: Notifications should be sent as quickly as possible to ensure timely delivery.