След задачи очереди в Nest
Задача уходит в Redis и выполняется позже в другом контексте: без связи с HTTP трудно понять, какой запрос её отправил и сколько времени заняла обработка в классе потребителя.
При установленных
@nestjs/bullmq
и bullmq агент Observe
сам открывает след для
задачи очереди. Если задачу
ставят во время HTTP запроса,
идентификатор следа передаётся
в задачу, и в дашборде видна
одна цепочка от запроса
до обработчика.
Покажем на примере постов:
import { Processor, WorkerHost } from '@nestjs/bullmq';
import { Job } from 'bullmq';
@Processor('posts')
export class PostProcessor extends WorkerHost {
async process(job: Job) {
return job.name;
}
}
Очередь и Observe остаются в корневом модуле; отдельный код следа в обработчике не требуется:
import { Module } from '@nestjs/common';
import { BullModule } from '@nestjs/bullmq';
import { ObserveModule } from './observe.js';
import { PostProcessor } from './post.processor.js';
@Module({
imports: [
ObserveModule.forRoot({
appKey: process.env.OBSERVE_APP_KEY!,
appSecret: process.env.OBSERVE_APP_SECRET!,
serviceId: 'posts-api',
}),
BullModule.forRoot({
connection: {
host: 'localhost',
port: 6379,
},
}),
BullModule.registerQueue({
name: 'posts',
}),
],
providers: [PostProcessor],
})
export class AppModule {}
Подключите WorkerProcessor
к очереди работников
и выполните задачу,
чтобы в Observe появился
след обработки.