https://github.com/mobizerg/nest-bull
Bull redis queue integration module for nestjs framework
https://github.com/mobizerg/nest-bull
bull nestjs queue typescript
Last synced: 7 months ago
JSON representation
Bull redis queue integration module for nestjs framework
- Host: GitHub
- URL: https://github.com/mobizerg/nest-bull
- Owner: mobizerg
- License: mit
- Created: 2019-05-24T11:33:08.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-06-17T12:00:42.000Z (over 6 years ago)
- Last Synced: 2025-01-28T19:48:34.595Z (9 months ago)
- Topics: bull, nestjs, queue, typescript
- Language: TypeScript
- Size: 8.79 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
A Bull redis queue integration module for Nest.js framework.### Installation
**Yarn**
```bash
yarn add @mobizerg/nest-bull bull ioredis
yarn add @types/bull --dev
```**NPM**
```bash
npm install @mobizerg/nest-bull bull ioredis --save
npm install @types/bull --save-dev
```### Description
Redis Queue integration module for [Nest.js](https://github.com/nestjs/nest) based on the [Bull](https://github.com/OptimalBits/bull) package.### Usage
Import the **BullModule** in `app.module.ts`
```typescript
import { Module } from '@nestjs/common';
import { BullModule } from '@mobizerg/nest-bull';
import { QueueJobProcessor } from './queue-job.processor';@Module({
imports: [
BullModule.register(options),
],
providers: [QueueJobProcessor],
})
export class AppModule {}
```
With Async
```typescript
import { Module } from '@nestjs/common';
import { BullModule } from '@mobizerg/nest-bull';
import { QueueJobProcessor } from './queue-job.processor';@Module({
imports: [
BullModule.registerAsync({
imports: [ConfigModule],
useExisting: BullConfigService,
}),
],
providers: [QueueJobProcessor],
})
export class AppModule {}
```Example config file (async)
```typescript
import { Injectable } from '@nestjs/common';
import { ConfigService } from './config.service';
import { BullModuleOptions, BullOptionsFactory } from '@mobizerg/nest-bull';@Injectable()
export class BullConfigService implements BullOptionsFactory {constructor(private readonly config: ConfigService) {}
createBullOptions(name?: string): BullModuleOptions {
return {
name,
options: {
redis: {
host: this.config.redisHost,
port: this.config.redisPort,
db: this.config.redisDatabase,
keyPrefix: this.config.redisPrefix + ':bull',
},
defaultJobOptions: {
timeout: 30 * 1000,
attempts: 2,
backoff: {
type: 'exponential',
delay: 5 * 60 * 1000,
},
},
},
};
}
}
```Example usage inside services
```typescript
import { Injectable } from '@nestjs/common';
import { InjectQueue } from '@mobizerg/nest-bull';
import { Queue } from 'bull';@Injectable()
export class BullService {constructor(@InjectQueue()
private readonly queue: Queue) {}async addToQueue(data: T) {
await this.queue.add(QUEUE_JOB_PROCESSOR, data);
}
}
```Example queue job processor
```typescript
import { Injectable, OnModuleInit } from '@nestjs/common';
import { InjectQueue } from '@mobizerg/nest-bull';
import { Job, Queue } from 'bull';@Injectable()
export class QueueJobProcessor implements OnModuleInit {constructor(@InjectQueue()
private readonly queue: Queue) {}onModuleInit() {
this.queue.process(QUEUE_JOB_PROCESSOR, (job: Job) => {
return 'completed';
});
}
}
```### License
MIT