Каков наилучший способ запуска метода Component (Service) сразу после запуска начальной загрузки?

Я использую экземпляр NestJS в качестве микросервиса (без HTTP).

Мне нужно запустить метод Компонента, который представляет собой бесконечный цикл с некоторой бизнес-логикой, сразу после начальной загрузки.

Каков наилучший способ сделать это?

SRC /main.ts

import {NestFactory} from '@nestjs/core';
import {ApplicationModule} from './app.module';
import {Transport} from '@nestjs/microservices';

async function bootstrap() {
    const app = await NestFactory.create(ApplicationModule);
    app.connectMicroservice({
        transport: Transport.REDIS,
        url: 'redis://:redis_pass@localhost:6379',
    });
    await app.startAllMicroservicesAsync();

    // Probably here I must run startLoop method from app.service.ts

}
bootstrap();

SRC /app.service.ts

import { Component } from '@nestjs/common';

@Component()
export class AppService {

    startLoop() {
        let timerId = setTimeout(function loop() {
            console.log('Loop process');
            // Some bussines logic here
            timerId = setTimeout(loop, 1000);
        }, 1000);
    }

}

1 ответ

Решение

Я бы сказал, что вы должны реализовать OnModuleInit Интерфейс, узнайте больше о хуках жизненного цикла здесь.

Другие вопросы по тегам