use jobScheduler instead of deprecatred repeatable

This commit is contained in:
Alex Holliday
2025-01-09 12:01:51 -08:00
parent 2dfe5dec7c
commit c1d6433e6c
+24 -21
View File
@@ -8,6 +8,7 @@ const QUEUE_LOOKUP = {
docker: "uptime",
pagespeed: "pagespeed",
};
const getSchedulerId = (monitor) => `scheduler:${monitor.type}:${monitor._id}`;
import { successMessages, errorMessages } from "../utils/messages.js";
class NewJobQueue {
@@ -440,27 +441,29 @@ class NewJobQueue {
throw new Error(`Queue for ${monitor.type} not found`);
}
// build job options
const jobOptions = {
attempts: 1,
backoff: {
type: "exponential",
delay: 1000,
const jobTemplate = {
name: jobName,
data: monitor,
opts: {
attempts: 1,
backoff: {
type: "exponential",
delay: 1000,
},
removeOnComplete: true,
removeOnFail: false,
timeout: 1 * 60 * 1000,
},
removeOnComplete: true,
removeOnFail: false,
timeout: 1 * 60 * 1000,
};
// Execute job immediately
await queue.add(jobName, monitor, jobOptions);
await queue.add(jobName, monitor, {
...jobOptions,
repeat: {
every: monitor?.interval ?? 60000,
immediately: false,
},
});
const schedulerId = getSchedulerId(monitor);
await queue.upsertJobScheduler(
schedulerId,
{ every: monitor?.interval ?? 60000 },
jobTemplate
);
await queue.upsert;
const workerStats = await this.getWorkerStats(queue);
await this.scaleWorkers(workerStats, queue);
@@ -490,9 +493,9 @@ class NewJobQueue {
async deleteJob(monitor) {
try {
const queue = this.queues[QUEUE_LOOKUP[monitor.type]];
const wasDeleted = await queue.removeRepeatable(monitor._id, {
every: monitor.interval,
});
const schedulerId = getSchedulerId(monitor);
const wasDeleted = await queue.removeJobScheduler(schedulerId);
if (wasDeleted === true) {
this.logger.info({
message: successMessages.JOB_QUEUE_DELETE_JOB,