README, комментарии в коде, чистка requirements.txt
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# IoT Consumer — обработчик событий
|
||||
|
||||
Читает сообщения из очереди RabbitMQ и сохраняет их в Redis (оперативный кэш) и MongoDB (постоянный архив).
|
||||
|
||||
## Пайплайн
|
||||
|
||||
```
|
||||
Producer → RabbitMQ → Consumer (этот сервис) → Redis + MongoDB → Dashboard
|
||||
```
|
||||
|
||||
## Хранилища
|
||||
|
||||
### Redis — оперативный кэш
|
||||
|
||||
| Ключ | Тип | Содержимое |
|
||||
|---|---|---|
|
||||
| `iot:latest` | Hash | Последнее значение каждого датчика (`sensor_id → JSON`) |
|
||||
| `iot:counters` | Hash | Счётчики событий по типам (`temperature: N`, ...) |
|
||||
| `iot:recent` | ZSET | Лента последних 1000 событий (сортировка по времени) |
|
||||
|
||||
### MongoDB — постоянный архив
|
||||
|
||||
- Коллекция: `iot_events`
|
||||
- TTL-индекс: автоматическое удаление через **7 дней**
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|---|---|---|
|
||||
| `RMQ_HOST` | `localhost` | Хост RabbitMQ |
|
||||
| `RMQ_PORT` | `5672` | Порт AMQP |
|
||||
| `RMQ_USER` | `guest` | Логин RabbitMQ |
|
||||
| `RMQ_PASS` | `guest` | Пароль RabbitMQ |
|
||||
| `RMQ_QUEUE` | `iot-events` | Имя очереди |
|
||||
| `REDIS_HOST` | `localhost` | Хост Redis |
|
||||
| `REDIS_PORT` | `6379` | Порт Redis |
|
||||
| `REDIS_PASS` | — | Пароль Redis (необязательно) |
|
||||
| `MONGO_URI` | `mongodb://localhost:27017/iot` | Строка подключения MongoDB |
|
||||
| `MONGO_DB` | `iot` | Имя базы MongoDB |
|
||||
| `PORT` | `3000` | Порт HTTP |
|
||||
|
||||
## Эндпоинты
|
||||
|
||||
| Путь | Ответ |
|
||||
|---|---|
|
||||
| `GET /` | `{"service":"iot-consumer","consumed":N,"errors":N}` |
|
||||
| `GET /health` | `{"status":"ok"}` |
|
||||
|
||||
## Локальный запуск
|
||||
|
||||
```bash
|
||||
npm install
|
||||
# Нужны RabbitMQ, Redis и MongoDB (локально или в Docker)
|
||||
RMQ_HOST=localhost REDIS_HOST=localhost MONGO_URI=mongodb://localhost:27017/iot node server.js
|
||||
```
|
||||
|
||||
## Деплой на Nubes Cloud
|
||||
|
||||
1. Запушьте этот репо в свой Gitea
|
||||
2. В Terraform-конфиге укажите `git_path` на ваш репо и `git_revision`
|
||||
3. Nubes автоматически запустит `npm start`
|
||||
|
||||
## Отказоустойчивость
|
||||
|
||||
- Каждое хранилище (Redis, MongoDB) обёрнуто в отдельный `try/catch`
|
||||
- Отказ одного хранилища **не ломает** запись в другое
|
||||
- Ошибки логируются, consumer продолжает работу
|
||||
Reference in New Issue
Block a user