refactor(shared): unified queue handling (#4691)
* feat(shared): unified queue initialization in shared * feat(queues): use the new queue creation everywhere * chore(shared): move to redis module * chore(shared): fix export maps * chore(fileimport): add deps properly * fix(shared): import fix * fix(everything): moear imports * fix(server): cjs imports
This commit is contained in:
@@ -1,20 +0,0 @@
|
||||
import Bull from 'bull'
|
||||
import { getRedisUrl } from '@/modules/shared/helpers/envHelper'
|
||||
import { createRedisClient } from '@/modules/shared/redis/redis'
|
||||
|
||||
export function buildBaseQueueOptions(): Bull.QueueOptions {
|
||||
return {
|
||||
createClient: (type) => {
|
||||
const client = createRedisClient(getRedisUrl(), {
|
||||
...(['bclient', 'subscriber'].includes(type)
|
||||
? {
|
||||
enableReadyCheck: false,
|
||||
maxRetriesPerRequest: null
|
||||
}
|
||||
: {})
|
||||
})
|
||||
|
||||
return client
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ import {
|
||||
MisconfiguredEnvironmentError
|
||||
} from '@/modules/shared/errors'
|
||||
import { getRedisUrl } from '@/modules/shared/helpers/envHelper'
|
||||
import { ensureError } from '@speckle/shared'
|
||||
|
||||
export function createRedisClient(redisUrl: string, redisOptions: RedisOptions): Redis {
|
||||
let redisClient: Redis
|
||||
@@ -35,36 +34,3 @@ export const getGenericRedis = (): Redis => {
|
||||
if (!redisClient) redisClient = createRedisClient(getRedisUrl(), {})
|
||||
return redisClient
|
||||
}
|
||||
|
||||
export const isRedisReady = (client: Redis) => {
|
||||
// MIT Licensed: https://github.com/OptimalBits/bull/blob/develop/LICENSE.md
|
||||
// Reference: https://github.com/OptimalBits/bull/blob/develop/lib/utils.js
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
if (client.status === 'ready') {
|
||||
resolve()
|
||||
} else {
|
||||
function handleReady() {
|
||||
client.removeListener('end', handleEnd)
|
||||
client.removeListener('error', handleError)
|
||||
resolve()
|
||||
}
|
||||
|
||||
function handleError(e: unknown) {
|
||||
const err = ensureError(e, 'Unknown error in Redis client')
|
||||
client.removeListener('ready', handleReady)
|
||||
client.removeListener('error', handleError)
|
||||
reject(err)
|
||||
}
|
||||
|
||||
function handleEnd() {
|
||||
client.removeListener('ready', handleReady)
|
||||
client.removeListener('error', handleError)
|
||||
reject(new Error('Redis connection ended'))
|
||||
}
|
||||
|
||||
client.once('ready', handleReady)
|
||||
client.on('error', handleError)
|
||||
client.once('end', handleEnd)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user