Имя задачи в Nest
Несколько фоновых шагов могут жить в одном классе, и по методу в памяти планировщика их не отличить. Остановка или проверка одной задачи без метки превращается в угадывание, какой экземпляр тронуть.
К @Cron можно добавить
объект настроек. Поле
name задаёт строковый
ключ, под которым задача
попадает в реестр планировщика.
Это имя потом передают в
SchedulerRegistry, когда
нужно получить конкретный
CronJob.
Покажем на примере постов:
import { Injectable } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
@Injectable()
export class PostTasksService {
@Cron(CronExpression.EVERY_MINUTE, {
name: 'post-list-minute',
})
handleCron() {
console.log('Post list minute');
}
}
Корневой модуль по-прежнему
импортирует ScheduleModule.forRoot
и регистрирует провайдер:
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { PostTasksService } from './post.tasks.service.js';
@Module({
imports: [ScheduleModule.forRoot()],
providers: [PostTasksService],
})
export class AppModule {}
Задайте имя минутной задаче
списка работников в
WorkerTasksService,
чтобы её можно было найти
в реестре по строковому ключу.