/health остаётся liveness (процесс жив); /ready возвращает 503, если bridge или consumer не в строю (горутина упала/не поднялась). Добавлен api.Readiness с atomic-флагами, NewRouter принимает *Readiness, main поднимает/опускает флаги вокруг фоновых горутин.
23 lines
849 B
Go
23 lines
849 B
Go
// readiness.go — состояние подсистем для readiness-пробы /ready.
|
|
package api
|
|
|
|
import "sync/atomic"
|
|
|
|
// Readiness отслеживает, работают ли фоновые подсистемы (bridge, consumer).
|
|
// /health — liveness (процесс жив), /ready — readiness (подсистемы в строю).
|
|
type Readiness struct {
|
|
bridgeUp atomic.Bool
|
|
consumerUp atomic.Bool
|
|
}
|
|
|
|
// SetBridge — отметить состояние bridge.
|
|
func (r *Readiness) SetBridge(up bool) { r.bridgeUp.Store(up) }
|
|
|
|
// SetConsumer — отметить состояние consumer.
|
|
func (r *Readiness) SetConsumer(up bool) { r.consumerUp.Store(up) }
|
|
|
|
// Ready — true, когда обе подсистемы работают.
|
|
func (r *Readiness) Ready() bool {
|
|
return r.bridgeUp.Load() && r.consumerUp.Load()
|
|
}
|