diff --git a/packages/api/src/jobqueue.ts b/packages/api/src/jobqueue.ts index 5a644f7af..d9f38e176 100644 --- a/packages/api/src/jobqueue.ts +++ b/packages/api/src/jobqueue.ts @@ -1,31 +1,38 @@ import { env } from './env' -import { Queue } from 'bullmq' +import { Queue, RedisOptions } from 'bullmq' import Redis from 'ioredis' -const redisOptions = () => { - if (env.redis.url?.startsWith('rediss://') && env.redis.cert) { +const createRSSRefreshFeedQueue = (): Queue | undefined => { + if (!env.redis.url) { + return undefined + } + const redisOptions = (): RedisOptions => { + if (env.redis.url?.startsWith('rediss://') && env.redis.cert) { + return { + tls: { + cert: env.redis.cert?.replace(/\\n/g, '\n'), + rejectUnauthorized: false, + }, + maxRetriesPerRequest: null, + } + } return { - tls: { - cert: env.redis.cert?.replace(/\\n/g, '\n'), - rejectUnauthorized: false, - }, maxRetriesPerRequest: null, } } - return { - maxRetriesPerRequest: null, - } + + const connection = new Redis(env.redis.url ?? '', redisOptions()) + return new Queue('rssRefreshFeed', { connection }) } -const connection = new Redis(env.redis.url ?? '', redisOptions()) - -export const rssRefreshFeedJobQueue = new Queue('rssRefreshFeed', { - connection, -}) - export const addRefreshFeedJob = async (jobid: string, payload: any) => { - return rssRefreshFeedJobQueue.add('rssRefreshFeed', payload, { + const rssRefreshFeedJobQueue = createRSSRefreshFeedQueue() + + if (!rssRefreshFeedJobQueue) { + return false + } + return rssRefreshFeedJobQueue?.add('rssRefreshFeed', payload, { jobId: jobid, removeOnComplete: true, removeOnFail: true,