РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpPtRy 187 of 201 menu
◀ ▶

Проверка готовности в Nest

Контейнер уже запущен, но база или кэш ещё недоступны, и трафик на API будет падать с ошибками. Балансировщику нужен отдельный сигнал, можно ли слать запросы на этот экземпляр.

Проверка готовности (readiness probe, зонд готовности) смотрит на зависимости или ресурс процесса. В @nestjs/terminus для этого передают в сводку индикаторы, например MemoryHealthIndicator с порогом кучи, как в документации фреймворка, когда отдельной базы в примере нет.

Покажем на примере постов:

import { Controller, Get } from '@nestjs/common'; import { HealthCheck, HealthCheckService, MemoryHealthIndicator, } from '@nestjs/terminus'; @Controller('health') export class HealthController { constructor( private health: HealthCheckService, private memory: MemoryHealthIndicator, ) {} @Get('live') @HealthCheck() live() { return this.health.check([]); } @Get('ready') @HealthCheck() ready() { return this.health.check([ () => this.memory.checkHeap( 'memory_heap', 150 * 1024 * 1024, ), ]); } }

Модуль проверок уже импортирует TerminusModule и контроллер:

import { Module } from '@nestjs/common'; import { TerminusModule } from '@nestjs/terminus'; import { HealthController } from './health.controller.js'; @Module({ imports: [TerminusModule], controllers: [HealthController], }) export class HealthModule {}

Добавьте в HealthController адрес готовности из пакета проверок и подключите HealthModule к приложению работников.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить