IoT Consumer — обработчик событий
Читает сообщения из очереди RabbitMQ и сохраняет их в Redis (оперативный кэш) и MongoDB (постоянный архив).
Пайплайн
Хранилища
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"} |
Локальный запуск
Деплой на Nubes Cloud
- Запушьте этот репо в свой Gitea
- В Terraform-конфиге укажите
git_path на ваш репо и git_revision
- Nubes автоматически запустит
npm start
Отказоустойчивость
- Каждое хранилище (Redis, MongoDB) обёрнуто в отдельный
try/catch
- Отказ одного хранилища не ломает запись в другое
- Ошибки логируются, consumer продолжает работу