mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-23 02:55:13 -04:00
5e773ce950
Migrate from `settings-sharelatex` to `@overleaf/settings` GitOrigin-RevId: 9a298ba26382180c1351683c5fddc9004418c1e6
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
const Queue = require('bull')
|
|
const Settings = require('@overleaf/settings')
|
|
|
|
// Bull will keep a fixed number of the most recently completed jobs. This is
|
|
// useful to inspect recently completed jobs. The bull prometheus exporter also
|
|
// uses the completed job records to report on job duration.
|
|
const MAX_COMPLETED_JOBS_RETAINED = 10000
|
|
const MAX_FAILED_JOBS_RETAINED = 50000
|
|
|
|
const queues = {}
|
|
|
|
function getAnalyticsEventsQueue() {
|
|
if (Settings.analytics.enabled) {
|
|
return getOrCreateQueue('analytics-events')
|
|
}
|
|
}
|
|
|
|
function getAnalyticsEditingSessionsQueue() {
|
|
if (Settings.analytics.enabled) {
|
|
return getOrCreateQueue('analytics-editing-sessions')
|
|
}
|
|
}
|
|
|
|
function getAnalyticsUserPropertiesQueue() {
|
|
if (Settings.analytics.enabled) {
|
|
return getOrCreateQueue('analytics-user-properties')
|
|
}
|
|
}
|
|
|
|
function getOnboardingEmailsQueue() {
|
|
return getOrCreateQueue('emails-onboarding')
|
|
}
|
|
|
|
function getPostRegistrationAnalyticsQueue() {
|
|
return getOrCreateQueue('post-registration-analytics')
|
|
}
|
|
|
|
function getOrCreateQueue(queueName, defaultJobOptions) {
|
|
if (!queues[queueName]) {
|
|
queues[queueName] = new Queue(queueName, {
|
|
redis: Settings.redis.queues,
|
|
defaultJobOptions: {
|
|
removeOnComplete: MAX_COMPLETED_JOBS_RETAINED,
|
|
removeOnFail: MAX_FAILED_JOBS_RETAINED,
|
|
attempts: 11,
|
|
backoff: {
|
|
type: 'exponential',
|
|
delay: 3000,
|
|
},
|
|
},
|
|
})
|
|
}
|
|
return queues[queueName]
|
|
}
|
|
|
|
module.exports = {
|
|
getAnalyticsEventsQueue,
|
|
getAnalyticsEditingSessionsQueue,
|
|
getAnalyticsUserPropertiesQueue,
|
|
getOnboardingEmailsQueue,
|
|
getPostRegistrationAnalyticsQueue,
|
|
}
|