2020-11-04 08:35:37 -05:00
|
|
|
const Queue = require('bull')
|
|
|
|
const Settings = require('settings-sharelatex')
|
|
|
|
|
2020-11-12 09:09:41 -05:00
|
|
|
const analyticsQueues = {}
|
|
|
|
|
2021-01-28 08:40:18 -05:00
|
|
|
// 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
|
2021-02-17 05:05:04 -05:00
|
|
|
const MAX_FAILED_JOBS_RETAINED = 50000
|
2021-01-28 08:40:18 -05:00
|
|
|
|
2020-11-12 09:09:41 -05:00
|
|
|
function initialize() {
|
|
|
|
if (Settings.analytics.enabled) {
|
|
|
|
analyticsQueues.events = createQueue('analytics-events')
|
|
|
|
analyticsQueues.editingSessions = createQueue('analytics-editing-sessions')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-04 08:35:37 -05:00
|
|
|
function createQueue(queueName, defaultJobOptions) {
|
|
|
|
return new Queue(queueName, {
|
|
|
|
redis: Settings.redis.queues,
|
|
|
|
defaultJobOptions: {
|
2021-01-28 08:40:18 -05:00
|
|
|
removeOnComplete: MAX_COMPLETED_JOBS_RETAINED,
|
2021-02-17 05:05:04 -05:00
|
|
|
removeOnFail: MAX_FAILED_JOBS_RETAINED,
|
2020-11-04 08:35:37 -05:00
|
|
|
attempts: 11,
|
|
|
|
backoff: {
|
|
|
|
type: 'exponential',
|
|
|
|
delay: 3000
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2020-11-12 09:09:41 -05:00
|
|
|
module.exports = { initialize, analytics: analyticsQueues }
|