66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import { Queue, QueueEvents } from "bullmq";
|
|
import { createBullMQConnection } from "./redis";
|
|
|
|
// Re-export shared job types so web code can import from one place
|
|
export type {
|
|
PipelineJobData,
|
|
DownloadPbfJobData,
|
|
ExtractPoisJobData,
|
|
GenerateGridJobData,
|
|
ComputeScoresJobData,
|
|
BuildValhallaJobData,
|
|
RefreshCityJobData,
|
|
JobProgress,
|
|
} from "@transportationer/shared";
|
|
|
|
export { JOB_OPTIONS } from "@transportationer/shared";
|
|
|
|
import type { PipelineJobData } from "@transportationer/shared";
|
|
|
|
// ─── Queue singleton ──────────────────────────────────────────────────────────
|
|
|
|
declare global {
|
|
// eslint-disable-next-line no-var
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
var __pipelineQueue: Queue<any> | undefined;
|
|
// eslint-disable-next-line no-var
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
var __valhallaQueue: Queue<any> | undefined;
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export function getPipelineQueue(): Queue<any> {
|
|
if (!globalThis.__pipelineQueue) {
|
|
globalThis.__pipelineQueue = new Queue("pipeline", {
|
|
connection: createBullMQConnection(),
|
|
defaultJobOptions: {
|
|
attempts: 1,
|
|
removeOnComplete: { age: 86400 * 7 },
|
|
removeOnFail: { age: 86400 * 30 },
|
|
},
|
|
});
|
|
}
|
|
return globalThis.__pipelineQueue;
|
|
}
|
|
|
|
/** Queue for build-valhalla jobs, processed by the valhalla-worker container. */
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export function getValhallaQueue(): Queue<any> {
|
|
if (!globalThis.__valhallaQueue) {
|
|
globalThis.__valhallaQueue = new Queue("valhalla", {
|
|
connection: createBullMQConnection(),
|
|
defaultJobOptions: {
|
|
attempts: 1,
|
|
removeOnComplete: { age: 86400 * 7 },
|
|
removeOnFail: { age: 86400 * 30 },
|
|
},
|
|
});
|
|
}
|
|
return globalThis.__valhallaQueue;
|
|
}
|
|
|
|
export function createQueueEvents(): QueueEvents {
|
|
return new QueueEvents("pipeline", {
|
|
connection: createBullMQConnection(),
|
|
});
|
|
}
|