बैल नौकरी नहीं हो रही में शुरू हो क्रॉन[Node.js]

0

सवाल

मैं कई पृष्ठभूमि नौकरियाँ प्रोसेसर सेट का उपयोग कर बैल की तरह पैकेज नीचे

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);
});

मैं चलाने की कोशिश की काम के आधार पर एक Crontime का उपयोग कर क्रॉन पैकेज लेकिन केवल एक काम हो जाता है संसाधितहै, कृपया जाँच के नमूने नीचे

  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',
  });

मैंने कोशिश की है कि चीजों की एक बहुत बनाने के लिए यह काम करते हैं लेकिन कोई भी काम करने लगता है, सूची जाएगा कुछ नीचे

  • चलने का इंतजार कतार । काटना({ बल: सच });
  • चल कार्यकर्ता प्रोसेसर पर एक अलग उदाहरण
  • देरी जोड़ने के लिए नौकरी - कतार । जोड़ें('टेस्ट',{}, {देरी:500});
  • जोड़ना प्राथमिकता काम करने के लिए - कतार । जोड़ें('टेस्ट',{}, {प्राथमिकता:1});

बाहर के दो नौकरियां(टेस्ट, healthCheckPing) उपरोक्त में से केवल एक हमेशा के लिए हो जाता है शुरू हो रहा है ।

कि है, या तो नौकरी के नाम का परीक्षण संसाधित हो जबकि अन्य एक नहीं है, या नौकरी के नाम healthCheckPing संसाधित हो जबकि अन्य एक नहीं है

इस नौकरियाँ प्रोसेसर कार्यों के नीचे

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;

इस कोड काम करता है पूरी तरह से अपने स्थानीय मशीन पर है, लेकिन इस समस्या को केवल तब होता है, जब उत्पादन पर. नोड सर्वर का उपयोग कर चलाएँ pm2(क्लस्टर मोड, आवृत्ति = 1)

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

सबसे अच्छा जवाब

0

मुद्दा था, क्योंकि मैं उपयोग कर रहा था एक ही कतार में नाम एक और सेवा साझा करने के एक ही Redis कनेक्शन,

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

बदलते श्रमिकों के लिए कुछ और मुद्दा फिक्स्ड

2021-11-20 19:22:17

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में