Данные задачи в Nest
Задача без полей заставляет обработчик снова искать строку в памяти по косвенным признакам. Заголовок уже известен в момент постановки, но до обработчика он не доходит.
При постановке передают
сериализуемый объект: BullMQ
кладёт его в Redis вместе
с именем задачи. В методе
process те же поля
доступны через job.data,
форма объекта остаётся на
усмотрение приложения.
Покажем на примере постов:
import { Injectable } from '@nestjs/common';
import { InjectQueue } from '@nestjs/bullmq';
import { Queue } from 'bullmq';
@Injectable()
export class PostService {
postQueue: Queue;
constructor(@InjectQueue('posts') postQueue: Queue) {
this.postQueue = postQueue;
}
async notifyCreated(title: string) {
await this.postQueue.add('post-created', { title });
}
}
Обработчик читает заголовок из полезной нагрузки задачи:
import { Processor, WorkerHost } from '@nestjs/bullmq';
import { Job } from 'bullmq';
@Processor('posts')
export class PostProcessor extends WorkerHost {
lastTitle = '';
async process(job: Job<{ title: string }>) {
this.lastTitle = job.data.title;
}
}
Поставьте из WorkerService
задачу с данными работника, а
WorkerProcessor сложит их
в поля класса.