Files
Verso/services/web/app/src/infrastructure/QueueWorkers.js
T
Alexandre Bourdin 2037adf808 Add new scheduled-jobs queue dedicated to delayed jobs (#5496)
* Add new scheduled-jobs queue dedicated to delayed jobs

* Extract createScheduledJob and enqueue to a dedicated QueueHandler

* Queues cleanup & refactoring (review suggestions)

GitOrigin-RevId: f7b9380388430e878def83cd44e7d086d0fb92ad
2021-10-26 08:03:17 +00:00

45 lines
1.5 KiB
JavaScript

const Features = require('./Features')
const Queues = require('./Queues')
const UserOnboardingEmailManager = require('../Features/User/UserOnboardingEmailManager')
const UserPostRegistrationAnalyticsManager = require('../Features/User/UserPostRegistrationAnalyticsManager')
const FeaturesUpdater = require('../Features/Subscription/FeaturesUpdater')
function start() {
if (!Features.hasFeature('saas')) {
return
}
const scheduledJobsQueue = Queues.getQueue('scheduled-jobs')
scheduledJobsQueue.process(async job => {
const { queueName, name, data, options } = job.data
const queue = Queues.getQueue(queueName)
if (name) {
await queue.add(name, data || {}, options || {})
} else {
await queue.add(data || {}, options || {})
}
})
const onboardingEmailsQueue = Queues.getQueue('emails-onboarding')
onboardingEmailsQueue.process(async job => {
const { userId } = job.data
await UserOnboardingEmailManager.sendOnboardingEmail(userId)
})
const postRegistrationAnalyticsQueue = Queues.getQueue(
'post-registration-analytics'
)
postRegistrationAnalyticsQueue.process(async job => {
const { userId } = job.data
await UserPostRegistrationAnalyticsManager.postRegistrationAnalytics(userId)
})
const refreshFeaturesQueue = Queues.getQueue('refresh-features')
refreshFeaturesQueue.process(async job => {
const { userId, reason } = job.data
await FeaturesUpdater.promises.refreshFeatures(userId, reason)
})
}
module.exports = { start }