Files
docmost/apps/server/src/integrations/queue/queue.module.ts
T
2024-11-28 18:54:28 +00:00

42 lines
1.2 KiB
TypeScript

import { Global, Module } from '@nestjs/common';
import { BullModule } from '@nestjs/bullmq';
import { EnvironmentService } from '../environment/environment.service';
import { createRetryStrategy, parseRedisUrl } from '../../common/helpers';
import { QueueName } from './constants';
@Global()
@Module({
imports: [
BullModule.forRootAsync({
useFactory: (environmentService: EnvironmentService) => {
const redisConfig = parseRedisUrl(environmentService.getRedisUrl());
return {
connection: {
host: redisConfig.host,
port: redisConfig.port,
password: redisConfig.password,
db: redisConfig.db,
retryStrategy: createRetryStrategy(),
},
defaultJobOptions: {
attempts: 3,
backoff: {
type: 'exponential',
delay: 10000,
},
},
};
},
inject: [EnvironmentService],
}),
BullModule.registerQueue({
name: QueueName.EMAIL_QUEUE,
}),
BullModule.registerQueue({
name: QueueName.ATTACHEMENT_QUEUE,
}),
],
exports: [BullModule],
})
export class QueueModule {}