Реализация 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:
@@ -0,0 +1,15 @@
|
||||
# Build context is the repo root (not this directory) — device-control-service
|
||||
# depends on the sibling proto/ Go module via a relative `replace` directive.
|
||||
FROM golang:1.25-alpine AS build
|
||||
WORKDIR /src
|
||||
COPY proto/ ./proto/
|
||||
COPY services/device-control-service/ ./services/device-control-service/
|
||||
WORKDIR /src/services/device-control-service
|
||||
RUN go mod download
|
||||
RUN CGO_ENABLED=0 go build -o /out/device-control-service ./cmd/device-control-service
|
||||
|
||||
FROM alpine:3.20
|
||||
RUN adduser -D -u 10001 app
|
||||
COPY --from=build /out/device-control-service /usr/local/bin/device-control-service
|
||||
USER app
|
||||
ENTRYPOINT ["/usr/local/bin/device-control-service"]
|
||||
Reference in New Issue
Block a user