Taur nu s-a declanșat în cron[Node.js]

0

Problema

Am mai multe locuri de muncă de fundal procesoare configurat folosind taur pachetul de mai jos

import { CronJob } from 'cron';

import Queue from 'bull';

let queue = new Queue('workers', {
  //  settings: { lockDuration: 60 * 20000 },
  defaultJobOptions: {
    removeOnComplete: true
  },
});


queue
  .on('waiting', function(jobId) {
    // A Job is waiting to be processed as soon as a worker is idling.
    // workerLogger.info(`Job ${jobId} waiting to be processed `);
  })
  .on('completed', async(job, result) => {
    workerLogger.info(`Job ID: ${job.id}, Result: ${result}`);
    try {
      const jobbed = await queue.getJob(job.id);
      if (jobbed) {
        await jobbed.remove();
        workerLogger.info(`removed completed job ${job.id}`);
      }
    } catch (error) {
      throw new Error(error);
    }
  })
  .on('failed', function(job, err) {
    workerLogger.error('job ' + job.id + ' in queue failed... ' + err);
  })
  .on('error', function(err) {
    workerLogger.error('Queue Error... ' + err);
  })
  .on('stalled', function(job) {
    workerLogger.info(
      `stalled job, restarting it again! ${job.queue.name} ${JSON.stringify(
          job.data,
        )} ${job.id} ${job.name}`,
    );
  });

queue.process('healthCheckPing', concurrency, function(job, done) {
  jobs.healthCheckPing(job.data, done);
});

queue.process('test', concurrency, function(job, done) {
  jobs.test(job.data, done);
});

Am încercat să fug de locuri de muncă bazate pe un Crontime folosind cron pachet, dar numai un singur loc de muncă devine prelucrate, vă rugăm să verificați eșantion de mai jos

  const cron = new CronJob({
    cronTime: '* * * * *',
    onTick: function() {
      (() => {
        workerLogger.info('Pushing test to queue...');

        queue.add('test');

        queue.add(
          'healthCheckPing',
          {
            jobName: 'test',
          },
        );
      })();
    },
    start: true,
    timeZone: 'Africa/Lagos',
  });

Am încercat o mulțime de lucruri pentru a face să funcționeze dar nici unul nu pare să funcționeze, va lista câteva de mai jos

  • rularea așteaptă coadă.distruge({ vigoare: true });
  • rularea lucrător procesor pe o instanță separată
  • adăugați întârziere la locul de muncă - coadă.adaugă('test',{}, {întârziere:500});
  • adăugarea de prioritate la locul de muncă - coadă.adaugă('test',{}, {prioritatea:1});

Din cele două Locuri de munca(test, healthCheckPing) de mai sus, doar unul devine întotdeauna declanșat.

asta este, fie slujba numit test de a fi procesate în timp ce celălalt nu este, sau nume de locuri de muncă healthCheckPing fi procesate, în timp ce celălalt nu este

Acest lucru este de locuri de muncă procesor funcțiile de mai jos

const jobs = {};

jobs.test = (_, done) => {
  try {
    workerLogger.error('test');

    done(false, 'ok');
  } catch (e) {
    done(e);
  }
};

jobs.healthCheckPing = async({
  jobName
}, done) => {
  try {
    workerLogger.info('health check pinger');

    if (!jobName) throw new Error('uuid not passed');

    // jobname is the slug for monitor

    // use pingkey to negate between staging and prod monitors
    const pingKey = !process.env.NODE_ENV || process.env.NODE_ENV !== 'production' ?
      process.env.STAGING_HEALTH_CHECK_KEY :
      process.env.PROD_HEALTH_CHECK_KEY;

    const url = `https://hc-ping.com/${pingKey}/${jobName}`;

    await axios.get(url);

    done(false, `pinged ${jobName}!`);
  } catch (error) {
    done(error);
  }
};

export default jobs;

Acest cod functioneaza perfect pe masina mea locale, dar această problemă numai apare atunci când pe producție. Nod server este rulat folosind pm2(modul cluster, exemplu = 1)

bull bullmq cron javascript
2021-11-20 16:34:11
1

Cel mai bun răspuns

0

problema a fost că am fost folosind același nume de coada într-un alt serviciu de partajare același Redis conexiune,

let queue = new Queue('workers', {
  //  settings: { lockDuration: 60 * 20000 },
  defaultJobOptions: {
    removeOnComplete: true
  },
});

schimbarea lucrătorilor la altceva rezolvat problema

2021-11-20 19:22:17

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Popular în această categorie

Întrebări frecvente în această categorie