@lookingfor2

Как остановить работу повторяющихся джоб?

Есть метод, который запускает 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) {
      // ....
    }
  }
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov
Помог ответ? Отметь решением.
https://docs.nestjs.com/techniques/queues#job-options

removeOnComplete не то что нужно?

Ну или job.remove().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы