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

Завершение модуля в Nest

Пусть при остановке приложения сервису нужно успеть закончить свою работу. Метод страницы в этот момент уже никто не вызывает: новых запросов нет, а класс ещё жив.

Завершение модуля вызывает метод onModuleDestroy у сервиса. Интерфейс OnModuleDestroy задаёт этот метод. Сама остановка до сервиса дойдёт, если в точке входа включена её обработка. Для этого до прослушивания порта вызывают enableShutdownHooks.

Покажем на примере постов. При завершении модуля сервис выведет строку в терминал:

import { Injectable, OnModuleDestroy } from '@nestjs/common'; @Injectable() export class PostService implements OnModuleDestroy { onModuleDestroy() { console.log('Posts module stopped'); } }

Сервис запишем в модуль постов:

import { Module } from '@nestjs/common'; import { PostService } from './post.service.js'; @Module({ providers: [PostService], }) export class PostsModule {}

Корневой модуль подключает модуль постов:

import { Module } from '@nestjs/common'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [PostsModule], }) export class AppModule {}

В точке входа включим обработку остановки:

import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableShutdownHooks(); await app.listen(process.env.PORT ?? 3000); } await bootstrap();

Включите обработку остановки и сделайте в сервисе WorkerService метод, который выполняется при завершении модуля работников. Модуль подключите к корневому.

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