P1-9: readiness-проба /ready отражает состояние bridge/consumer
/health остаётся liveness (процесс жив); /ready возвращает 503, если bridge или consumer не в строю (горутина упала/не поднялась). Добавлен api.Readiness с atomic-флагами, NewRouter принимает *Readiness, main поднимает/опускает флаги вокруг фоновых горутин.
This commit is contained in:
@@ -89,7 +89,9 @@ func main() {
|
||||
}
|
||||
|
||||
// HTTP API — в основном потоке.
|
||||
router := api.NewRouter(h, log, cfg.AuthTestMode, cfg.JwtHMACSecret, version)
|
||||
// Readiness: /ready отдаёт 503, пока bridge/consumer не подняты.
|
||||
ready := &api.Readiness{}
|
||||
router := api.NewRouter(h, log, cfg.AuthTestMode, cfg.JwtHMACSecret, version, ready)
|
||||
server := &http.Server{
|
||||
Addr: ":" + cfg.APIPort,
|
||||
Handler: router,
|
||||
@@ -102,6 +104,8 @@ func main() {
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
ready.SetBridge(true)
|
||||
defer ready.SetBridge(false)
|
||||
if err := bridge.Run(ctx, cfg, sqsClient, log); err != nil && !errors.Is(err, context.Canceled) {
|
||||
log.Error("bridge stopped", "err", err)
|
||||
}
|
||||
@@ -109,6 +113,8 @@ func main() {
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
ready.SetConsumer(true)
|
||||
defer ready.SetConsumer(false)
|
||||
if err := consumer.Run(ctx, cfg, sqsClient, iotStore, log); err != nil && !errors.Is(err, context.Canceled) {
|
||||
log.Error("consumer stopped", "err", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user