| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const Queue = require('bull')
- const Settings = require('settings-sharelatex')
- // 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,
- }
|