Этот проект представляет собой распределённый сервис для отправки уведомлений через Email, SMS и Push. Он использует Kafka как брокер сообщений, PostgreSQL для хранения данных и Loki для логирования.
Сервис состоит из нескольких компонентов:
- Notification Gateway – API для получения запросов на отправку уведомлений.
- Email Service – обработка и отправка Email-уведомлений.
- SMS Service – обработка и отправка SMS-уведомлений через API SMS Aero.
- Push Notification Service – обработка и отправка Push-уведомлений через FireBase.
- Message Broker – Kafka используется для асинхронного обмена сообщениями между сервисами.
- Database – PostgreSQL для хранения состояния уведомлений.
- Loki – сбор и анализ логов.
Проект полностью контейнеризован с использованием Docker Compose. Или Частично в Visual Studio для отладки.
Запросы на отправку уведомлений отправляются через Notification Gateway. Пример запроса:
POST /api/notifications/send
{
"type": "email",
"recipients": "user1@example.com,user2@example.com",
"message": "Hello, this is a test email!",
"subject": "Test Email"
}По��держиваемые типы уведомлений:
emailsmspush
Для логирования используется Loki. Все логи можно просматривать через Grafana.
Email Service использует SMTP для отправки писем. Конфигурация задаётся через appsettings.json или переменные окружения:
{
"EmailSettings": {
"SmtpServer": "smtp.example.com",
"SmtpPort": 587,
"SenderEmail": "your_user",
"SenderPassword": "your_password"
}
}SMS Service отправляет сообщения через SMS Aero. Конфигурация задаётся через appsettings.json:
{
"SMS": {
"Email": "your_email",
"ApiKey": "your_api_key"
}
}Push Service принимает запросы через Kafka. Пример сообщения:
{
"type": "push",
"recipients": "device_id_1,device_id_2",
"message": "Test push notification"
}