NodeJS, как повторить задание очереди, используя бык через определенное время после того, как это задание не выполнено - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать задание, которое будет повторяться через определенное время после сбоя задания, используя bull queue.Но работа никогда не откладывалась, всегда оправдывала сразу после.Вот мой текущий код:

const Queue = require('bull');
const queue = new Queue('send notiffication to main app', 'redis://127.0.0.1:6379');
const sendDepositNotificationToMainAppJob = require('../jobs/sendDepositNotificationToMainApp');

 queue.process(new sendDepositNotificationToMainAppJob(depositSuccess));

sendDepositNotificationToMainApp.js

const Queue = require('bull');
const queue = new Queue('send notif to main app', 'redis://127.0.0.1:6379');
class sendDepositNotificationToMainApp {
    constructor(depositSuccess){
        return handle(depositSuccess);
    }
}

const handle = async (depositSuccess) => {
  try {
   //some function here
   }.catch(e){
     //if error retry job here 
      queue.add(new sendDepositNotificationToMainApp(depositSuccess), {delay : 5000})
   }

}

module.exports = sendDepositNotificationToMainApp;

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 16 апреля 2019

По документам здесь

При создании новой работы Вы можете передавать параметры работы. В котором есть попытки и опция отката.

В вашем случае при создании работы вы можете просто пропустить

Queue.add('<You-job-name>', <Your-Data>, {
   attempts: 5, // If job fails it will retry till 5 times
   backoff: 5000 // static 5 sec delay between retry
});

Откат может быть числом в мс или вы можете передать отдельную опцию, например:

interface BackoffOpts{
   type: string; // Backoff type, which can be either `fixed` or `exponential`. 
   //A custom backoff strategy can also be specified in `backoffStrategies` on the queue settings.
   delay: number; // Backoff delay, in milliseconds.
}
...