Реализация device-control-service: gRPC + MQTT + Device Shadow в Redis
Добавлен gRPC-контракт proto/device_control (TurnOn/TurnOff/SetLevel), общий Go-модуль proto/ для переиспользования сгенерированного кода. device-control-service принимает команды по gRPC, обновляет desired_state в Redis и публикует их в MQTT; слушает devices/+/telemetry и devices/+/ack для отметки живости устройства и обновления reported_state; горутина health-check переводит устройство в offline по таймауту и публикует событие в RabbitMQ (device.status_changed) для будущего notification-service. Проверено сквозным тестом через docker compose: grpcurl TurnOn/SetLevel меняет desired_state и уходит в MQTT, mosquitto_pub с ack обновляет reported_state и статус, health-check автоматически переводит устройство в offline по истечении таймаута.
This commit is contained in:
@@ -17,6 +17,7 @@ CLICKHOUSE_PASSWORD=change_me
|
||||
REDIS_HOST=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=
|
||||
REDIS_DB=0
|
||||
|
||||
# --- RabbitMQ (async events between Go services) ---
|
||||
RABBITMQ_HOST=rabbitmq
|
||||
@@ -31,6 +32,9 @@ MQTT_PORT=1883
|
||||
|
||||
# --- device-control-service (gRPC) ---
|
||||
DEVICE_CONTROL_GRPC_PORT=50051
|
||||
DEVICE_CONTROL_MQTT_CLIENT_ID=device-control-service
|
||||
DEVICE_CONTROL_HEALTHCHECK_TIMEOUT=60s
|
||||
DEVICE_CONTROL_HEALTHCHECK_INTERVAL=15s
|
||||
|
||||
# --- ingest-service ---
|
||||
INGEST_MQTT_CLIENT_ID=ingest-service
|
||||
|
||||
Reference in New Issue
Block a user