В корне проекта создать .env:
TELEGRAM_BOT_API_URL=https://api.telegram.org/bot<BOT_TOKEN>👉 заменить <BOT_TOKEN> на токен Telegram-бота
Сборка и запуск всех сервисов:
docker compose up --buildОчередь сообщений (message broker)
UI управления:
http://localhost:15672
Логин/пароль:
guest / guest
REST API на NestJS
http://localhost:4242
http://localhost:4242/docs
Микросервис:
- читает сообщения из RabbitMQ
- обрабатывает их
- базу данных НЕ добавлял
- ID чата Telegram хранится в оперативной памяти
- после перезапуска контейнеров ID будет стёрт
Перед отправкой запросов на бек надо:
- Открыть Telegram
- Найти бота
- Отправить команду:
/start
👉 после этого chat_id сохраняется в памяти и бот сможет отправлять сообщения
- Пользователь отправляет POST-запрос на:
/producer/event
с любым JSON body, например:
{ "a": "aaa" }- На стороне
producer-service:
- к объекту автоматически добавляется
uuid - после этого событие отправляется в очередь RabbitMQ
Пример итогового объекта:
{
"uuid": "generated-uuid",
"a": "aaa"
}consumer-service:
- получает сообщение из очереди
- отправляет сообщение в Telegram-бота
- сообщение приходит в чат, который ранее был сохранён через
/start