เจ้ากระทิงงานไม่ได้จะกระตุ้นในบริการ cron[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',
  });

ฉันพยายามหลายอย่างต้องทำให้มันทำงานแต่มันไม่ดูเหมือนจะทำงานจะรายชื่อบางด้านล่างนี้

  • กำลัง รอคำสั่งคิวอีกobliterate({บังคับใช้:เรื่องจริง});
  • งานงานหน่วยประมวลผล name บแยกตัวอย่าง
  • เพิ่มหน่วงเวลาต้องทำงาน- คิวอีกเพิ่ม('ทดสอบ',{},{หน่วงเวลา:500});
  • เพิ่มความสำคัญต้องทำงาน- คิวอีกเพิ่ม('ทดสอบ',{},{ความสำคัญ:1});

ออกจากสองงานพิมพ์(การทดสอบ healthCheckPing)อยู่เหนือเพียง หนึ่ง เสมได้รับการกระตุ้น

นั่นเป็นเหมือนกับงานที่ชื่อ ทดสอบ ได้ถูกประมวลผลในขณะที่อีกคนหนึ่งไม่ได้หรืองานชื่อของ healthCheckPing ได้ถูกประมวลผลในขณะที่อีกคนหนึ่งคือไม่

นี่คืองานหน่วยประมวลผล name ฟังก์ชันที่ด้านล่างนี้

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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่