Skip to content

RianDeveloper/telnode-service

Repository files navigation

Telnod Notification Platform

Микросервисный проект на Nest.js: producer публикует события в RabbitMQ, consumer обрабатывает их с ретраями/идемпотентностью и отправляет уведомления в Telegram.

Стек

  • Node.js 20+, Nest.js 11
  • RabbitMQ (publisher confirms, manual ack/nack, retry, DLQ)
  • Telegram Bot API (sendMessage)
  • Swagger для producer API
  • Jest (unit + e2e)
  • Docker & Docker Compose

Структура

apps/
  producer-service/
    src/
      events/                -> HTTP endpoint /events
      rabbit/                -> Publisher in RabbitMQ
  consumer-service/
    src/
      rabbit/                -> Consumer with ack/nack/retries
      telegram/              -> Telegram notification sender
libs/
  common/src/
    dto/                     -> shared DTO
    events/                  -> event envelope
    idempotency/             -> in-memory idempotency store
docker-compose.yml
Makefile

Запуск

cp .env.example .env
docker compose --env-file .env up --build
  • Producer API: http://localhost:3000
  • Swagger: http://localhost:3000/docs
  • RabbitMQ UI: http://localhost:15672 (guest/guest)

API

Метод Путь Описание
POST /events Публикация события в RabbitMQ
GET /health Health check producer

Пример POST /events:

{
  "eventType": "order.created",
  "payload": {
    "orderId": "123",
    "amount": 500
  },
  "meta": {
    "source": "manual-test"
  }
}

Тесты и команды

npm run build
npm run test
npm run test:e2e
npm run lint

Или через Makefile:

make build
make test
make test-e2e
make up
make down

Переменные окружения

Переменная По умолчанию Описание
PRODUCER_PORT 3000 Порт producer API
RABBITMQ_URL amqp://guest:guest@rabbitmq:5672/ Подключение к RabbitMQ
TELEGRAM_BOT_TOKEN - Токен Telegram бота
TELEGRAM_CHAT_ID - ID чата для уведомлений

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors