P1-9: readiness-проба /ready отражает состояние bridge/consumer

/health остаётся liveness (процесс жив); /ready возвращает 503, если bridge или
consumer не в строю (горутина упала/не поднялась). Добавлен api.Readiness с
atomic-флагами, NewRouter принимает *Readiness, main поднимает/опускает флаги
вокруг фоновых горутин.
This commit is contained in:
Repinoid
2026-10-07 07:25:09 +03:00
parent f19ab47c29
commit 3036572ccc
4 changed files with 59 additions and 6 deletions
+10 -3
View File
@@ -42,10 +42,17 @@
`store.Flush(ctx)`, и только при успехе — `DeleteMessage`. При ошибке flush
сообщения НЕ удаляются (вернутся после visibility timeout).
### P1-9 — `/ready` отражает состояние подсистем
- `internal/service/api/readiness.go` — тип `Readiness` (atomic-флаги bridge/consumer).
- `internal/service/api/router.go` — `NewRouter` принимает `*Readiness`; добавлен
`/ready` (200 если обе подсистемы в строю, иначе 503). `/health` остался
liveness-пробой.
- `cmd/iot-service/main.go` — bridge/consumer поднимают/опускают свои флаги;
если горутина завершилась (ошибка/падение), `/ready` вернёт 503.
## Осталось (не сделано)
- P0-3 часть 1 (хэш паролей + EMQX), P0-8 (идемпотентность), P1-9 (`/health`
отражает состояние подсистем), P1-11/P1-12 (тесты/CI), P2-14 (вычистить
легаси `internal/api/`).
- P0-3 часть 1 (хэш паролей + EMQX), P0-8 (идемпотентность), P1-11/P1-12
(тесты/CI), P2-14 (вычистить легаси `internal/api/`).
- Платформенные проблемы (wss ~150с, MSS/MTU) — вне кода.
## Проверки