Есть метод, который запускает 3 раза, с периодом раз в минуту, джобу, которая опрашивает внешний сервис.
Сервис может вернуть нужный мне статус, в этому случае мне нужно остановить повтор джобы, чтобы не отправлять лишние запросы.
Использую @nestjs/bull.
Запуск очереди.
/** Checking transaction status */
async executeQueue(
transaction: TransactionInitiatingJobResult,
): Promise<number | string> {
try {
const job = await this.queue.add(
this.jobName,
{ transaction },
{
repeat: {
cron: '* * * * *',
limit: 3,
},
},
);
return job.id;
} catch (error) {
// this.logger.error(`Error queueing of getting transaction status`)
// return false;
}
}
Предполагаю, в этом месте остановить джобу, при нужном мне статусе.
@Processor('transaction-status-queue')
export class TransactionStatusProcessor extends BaseProcessor {
@OnQueueCompleted()
async onComplete(job: Job, result: TransactionStatusJobResult) {
// Вот тут нужно остановить джобу
if (result.Status === TransactionStatus.CHECKED) {
// ....
}
}